化简器完成后调用映射器



>我正在执行作业:

hadoop/bin/./hadoop jar /home/hadoopuser/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.6.0.jar  -D mapred.reduce.tasks=2 -file kmeans_mapper.py    -mapper kmeans_mapper.py -file kmeans_reducer.py 
-reducer kmeans_reducer.py -input gutenberg/small_train.csv -output gutenberg/out
当两个化简器完成后,我想

对结果做一些事情,所以理想情况下,我想调用另一个文件(另一个映射器?),它将接收化简器的输出作为其输入。如何轻松做到这一点?

我检查了这个博客,其中有一个Mrjob示例,它没有解释,我不知道如何做我的。

MapReduce教程指出:

用户可能需要链接MapReduce作业

来完成无法通过单个MapReduce作业完成的复杂任务。这相当容易,因为作业的输出通常转到分布式文件系统,而输出反过来又可以用作下一个作业的输入。

但它没有给出任何例子...

这里有一些我可以理解的Java代码,但我正在写Python! :/


这个问题揭示了一些信息:在Hadoop流中链接多个mapreduce任务

可以使用Java API完成您要求的事情,因为您已经找到了示例。

但是,您使用的是流式处理 API,它只是读取标准输入并写入标准输出。除了完成 hadoop jar 命令之外,没有回调可以说明 mapreduce 作业何时完成。但是,因为它完成了,所以并不真正表明"成功"。话虽如此,如果没有围绕流式处理 API 的更多工具,这真的是不可能的。

如果输出被写入本地终端而不是 HDFS,则可以将该输出通过管道传输到另一个流作业的输入中,但不幸的是,蒸罐的输入和输出需要 HDFS 上的路径。

相关内容

  • 没有找到相关文章

最新更新