r - Hadoop 流式 reducer 到映射器

标签 r hadoop streaming

我正在用 R 编写 Hadoop 流作业,并且遇到了一个相当奇怪的情况,我找不到任何文档。我想运行一个直接传递到另一个映射器的缩减作业(不需要映射器)。是否可以在没有初始映射器的情况下直接在reduce作业之后堆叠map作业?如果我编写一个身份映射器将输出传递给我的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

这不起作用。

最佳答案

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

您无法将归约输出直接发送到映射器。它总是先映射,然后减少。就是这样运作的。但是,您可以有两个 MapReduce 作业。让reducer写入HDFS,然后启动第二个仅映射作业来读取第一个作业的输出数据。

一般来说,如果你想在reduce之后做一个map,你几乎总是可以将它们折叠成同一个东西。想一想:如果您要映射来自 reducer 的每个输出记录,为什么不在 reducer 末尾运行该“映射”代码呢?这比运行两个 MapReduce 作业要高效得多。如果您确实不想编写新的 R 脚本来执行此操作,可以将其包装在 bash 脚本中,这样它们看起来就像是一个脚本。

关于r - Hadoop 流式 reducer 到映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29439142/

相关文章:

r - 调用rmarkdown::render时接收器已满

r - 使用 tidyr,当传播值获得 NA

hadoop - 调度具有输入参数的HBase Hadoop MR作业

javascript - 分析器未在音频传入时更新 Canvas 绘制速度

r - 查找第一个和最后一个非 NA 值之间的列数

r - 有关丢失数据的问题

linux - 配置多节点后我们可以使用单节点配置吗?我说的是hadoop

hadoop - 用户是否需要在所有节点上都存在才能被hadoop集群/HDFS识别?

node.js - 从 MJPEG 流中提取 JPEG 并通过 websocket 发布 base64 编码图像

java - 是否可以从 Java 应用程序控制 CPU 使用率?