我正在做一个Map缩小程序。我尝试使用setlong方法将参数传递给reduce方法中的上下文配置,然后在完成后在main中读取它们
异径管:
context.getConfiguration().setLong(key, someLong);
在工作完成后,我主要使用以下方法阅读:
long val = job.getConfiguration().getLong(key, -1);
但我总是得到-1。
当我试着在减速机内部阅读时,我看到值被设置了,我得到了正确的答案。
我错过什么了吗?
谢谢您
2条答案
按热度按时间z31licg01#
您可以使用计数器:在reducer中设置并更新它们的值,然后您可以在您的客户机应用程序(main)中访问它们。
mzmfm0qo2#
您可以将配置从main转换为map任务或reduce任务,但不能将其转换回。配置转换的过程是:
mapreduce客户机上会根据在main上设置的配置生成一个配置文件,该文件将被推送到仅由作业共享的hdfs路径。该文件将是只读的
启动map或reduce任务时,将从hdfs路径中提取配置文件,并根据该文件初始化配置。
如果您想转换回配置,您可以使用另一个hdfs文件:更新reducer上的文件,并在作业完成后读取它