Hadoop将变量从reducer传递给main

时间:2016-07-16 11:41:56

标签: hadoop mapreduce

我正在制作地图缩减计划。我尝试使用setLong方法将参数传递给reduce方法中的上下文配置,然后在完成后在主

中读取它们 减速器中的

context.getConfiguration().setLong(key, someLong);

在作业完成后的主页中,我尝试阅读:

long val = job.getConfiguration().getLong(key, -1);

但我总是得到-1。

当我尝试在reducer内部阅读时,我看到该值已设置并且我得到了正确的答案。

我错过了什么吗?

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用计数器:在reducers中设置和更新它们的值,然后您可以在客户端应用程序(Main)中访问它们。

答案 1 :(得分:2)

您可以将配置从主要任务转换为地图任务或减少任务,但您无法将其转换回来。配置转换的过程是:

  • 根据您在main上设置的配置在MapReduce客户端上生成配置文件,并将其推送到仅由作业共享的HDFS路径。该文件将只读
  • 启动映射或减少任务时,将从HDFS路径中提取配置文件,并根据文件初始化配置。

如果要将配置翻译回来,可以使用另一个HDFS文件:在Reducer上更新文件,并在作业完成后阅读