hadoop将变量从reducer传递到main

xbp102n0  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(306)

我正在做一个Map缩小程序。我尝试使用setlong方法将参数传递给reduce方法中的上下文配置,然后在完成后在main中读取它们
异径管:

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

在工作完成后,我主要使用以下方法阅读:

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

但我总是得到-1。
当我试着在减速机内部阅读时,我看到值被设置了,我得到了正确的答案。
我错过什么了吗?
谢谢您

z31licg0

z31licg01#

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

mzmfm0qo

mzmfm0qo2#

您可以将配置从main转换为map任务或reduce任务,但不能将其转换回。配置转换的过程是:
mapreduce客户机上会根据在main上设置的配置生成一个配置文件,该文件将被推送到仅由作业共享的hdfs路径。该文件将是只读的
启动map或reduce任务时,将从hdfs路径中提取配置文件,并根据该文件初始化配置。
如果您想转换回配置,您可以使用另一个hdfs文件:更新reducer上的文件,并在作业完成后读取它

相关问题