hadoop - 在 map 函数中更新计数器并在 reduce 中访问

标签 hadoop

我正在使用 Hadoop 管道。我想在 map 中使用 counter,它应该可以在 reduce 函数中访问。
这可能吗?

最佳答案

不,在同一份工作中这是不可能的。但是,您可以有一个没有 reducer 的作业,收集您想要计算的任何计数器信息,然后启动第二个作业,在作业配置对象中添加这些计数值,然后第二个作业的 reducer 可以访问这些值.

编辑:

这是一个代码示例:

enum COUNTERS {C1; C2;}

class DriverCode
{
  Configuration conf = new Configuration();
  //the Mapper increases C1
  Job job1 = new Job(conf, "Job1"); 
  job1.setJarByClass(MyJar.class);
  job1.setMapperClass(MyMapper1.class); 
  ...

  //read out C1 
  long c1 = job.getCounters().findCounter(COUNTERS.C1).getValue();

  //set it for the new job
  conf.setLong("c1",c1);
  Job job2 = new Job(conf, "Job2"); 
  //and now you can access this configuration object in your second job
  job2.setJarByClass(MyJar.class); 
  job2.setMapperClass(MyMapper2.class);
  ...
}

关于hadoop - 在 map 函数中更新计数器并在 reduce 中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702313/

相关文章:

hadoop - 本地主机 : ERROR: Cannot set priority of datanode process 32156

hadoop - 我需要在hdfs中自动创建AD用户目录

shell - pig 咕shell shell 中的copyFromLocal错误

hadoop - Hadoop/Spark 中的多线程

hadoop - Hive外部表检索查询(Hive的新增功能)

hadoop - Pig Latin(在 foreach 循环中过滤第二个数据源)

hadoop - 首选推荐系统

ubuntu - Oracle vm 中 ubuntu 中的 SSH 连接抛出错误

hadoop - Hadoop 中的粘性位

java.io.IOException : wrong key class: X is not class <ReducerOutputClass>