Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop将变量从reducer传递到main_Hadoop_Mapreduce - Fatal编程技术网

Hadoop将变量从reducer传递到main

Hadoop将变量从reducer传递到main,hadoop,mapreduce,Hadoop,Mapreduce,我正在做一个地图缩小程序。我试图使用setLong方法将参数传递给reduce方法中的上下文配置,然后在完成后在main中读取它们 在减速器中: context.getConfiguration().setLong(key, someLong); 在工作完成后,我主要尝试使用以下方法阅读: long val = job.getConfiguration().getLong(key, -1); 但我总是得到-1 当我尝试读取减速器内部的读数时,我看到设置了该值,并且得到了正确的答案 我错过什么

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

在减速器中:

context.getConfiguration().setLong(key, someLong);
在工作完成后,我主要尝试使用以下方法阅读:

long val = job.getConfiguration().getLong(key, -1);
但我总是得到-1

当我尝试读取减速器内部的读数时,我看到设置了该值,并且得到了正确的答案

我错过什么了吗


谢谢

您可以将配置从main转换为map任务或reduce任务,但无法将其转换回。配置转换的过程是:

  • MapReduce客户端会根据您在main上设置的配置生成一个配置文件,该文件将被推送到仅由作业共享的HDFS路径。该文件将是只读的
  • 启动map或reduce任务时,将从HDFS路径提取配置文件,并根据该文件初始化配置

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

您可以将配置从main翻译回map任务或reduce任务,但无法将其翻译回。配置转换的过程是:

  • MapReduce客户端会根据您在main上设置的配置生成一个配置文件,该文件将被推送到仅由作业共享的HDFS路径。该文件将是只读的
  • 启动map或reduce任务时,将从HDFS路径提取配置文件,并根据该文件初始化配置

如果要将配置转换回,可以使用另一个HDFS文件:在Reducer上更新该文件,并在作业完成后读取它

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

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