Доступ к счетчику в настройке редуктора в Hadoop - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь получить количество строк входных записей в маппере, запустив

job.getCounters().findCounter(TaskCounter.MAP_INPUT_RECORDS).getValue()

На самом деле, он работает после того, как работа завершена, и я хочу сделать то же самое на этапе настройки редуктора. Я попытался переписать 2 функции настройки в соответствии с этой страницей Доступ к счетчику картографа из редуктора . Однако ни один из них не работает, и оба возвращают исключение нулевого указателя.

    @Override
    protected void setup(Reducer<Text, DoubleWritable, Text, DoubleWritable>.Context context)
            throws IOException, InterruptedException {
        Configuration conf = context.getConfiguration();
        Cluster cluster = new Cluster(conf);
        //RunningJob job = (RunningJob) cluster.getJob(context.getJobID());
        Job job = cluster.getJob(context.getJobID());
        System.out.println(job.getCounters().findCounter(TaskCounter.MAP_INPUT_RECORDS).getValue());
    }

    @Override
    protected void setup(Reducer<Text, DoubleWritable, Text, DoubleWritable>.Context context)
            throws IOException, InterruptedException {
        Configuration conf = context.getConfiguration();
        JobClient client = new JobClient(conf);
        RunningJob job = client.getJob(JobID.forName(conf.get("mapred.map.id")));
        //Job job = (Job) client.getJob((JobID) context.getJobID());
        System.out.println(job.getCounters().findCounter(TaskCounter.MAP_INPUT_RECORDS).getValue());

    }

Может кто-нибудь помочь мне решить проблему? Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...