Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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
R Hadoop流还原器到映射器_R_Hadoop_Streaming - Fatal编程技术网

R Hadoop流还原器到映射器

R Hadoop流还原器到映射器,r,hadoop,streaming,R,Hadoop,Streaming,我正在用R编写Hadoop流媒体作业,遇到了一个相当奇怪的情况,我找不到任何文档。我想运行一个直接传递给另一个映射程序的reduce作业(不需要映射程序)。是否可以在没有初始映射器的情况下,将映射作业直接堆叠在reduce作业之后?如果我编写了一个标识映射器,将输出传递给我的reduce作业,那么我可以将reduce输出传递给另一个映射器吗?如果可以,如何传递?我目前的代码是: $HADOOP_HOME/bin/hadoop jar /opt/cloudera/parcels/CDH-5.3.2

我正在用R编写Hadoop流媒体作业,遇到了一个相当奇怪的情况,我找不到任何文档。我想运行一个直接传递给另一个映射程序的reduce作业(不需要映射程序)。是否可以在没有初始映射器的情况下,将映射作业直接堆叠在reduce作业之后?如果我编写了一个标识映射器,将输出传递给我的reduce作业,那么我可以将reduce输出传递给另一个映射器吗?如果可以,如何传递?我目前的代码是:

$HADOOP_HOME/bin/hadoop jar /opt/cloudera/parcels/CDH-5.3.2-1.cdh5.3.2.p0.10/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming.jar \
  -reduce myreducer.r \
  -input myinput/ \
  -output myoutputdir \
  -file file1.r \
  -file file2.Rdata

这不起作用。

我会回答你的问题,然后给出我的建议

不能将reduce输出直接发送到映射器。它总是地图,然后减少。就这么回事。但是,您可以有两个MapReduce作业。让reducer写入HDFS,然后启动第二个仅映射作业,该作业读取第一个作业的输出数据

一般来说,如果你想在reduce之后制作一张地图,你几乎可以把它们折叠成相同的东西。想一想:如果要映射一个reducer的每个输出记录,为什么不在reducer的末尾运行“map”代码呢?这比运行两个MapReduce作业要高效得多。如果您真的不想编写一个新的R脚本来实现这一点,那么可以将其包装在bash脚本中,使其看起来像是一个脚本