将Hadoop流式传输作业的输出发送到STDOUT

时间:2014-06-09 20:45:38

标签: python apache hadoop mapreduce

对于流式作业,您必须指定输出目录。如果我想将mapper的结果输出到stdout而不是HDFS目录,该怎么办?这可能吗?我想这样做,所以我可以管道其他程序。

1 个答案:

答案 0 :(得分:0)

我在hadoop内写了很多流媒体工作。目前尚不清楚您希望自定义管道在此处做什么。

让我们仔细看看,假设您在python中编写了映射器/ reducer(例如,从.py更改为.sh用于shell脚本):

hadoop jar hadoop-*streaming*.jar 
-file mapper.py    -mapper mapper.py \
-input /user/myuser/input/* -output /user/myuser/output

在这种情况下,输出将转到hdfs - 这就是你所说的想要的。

因此,如果我们将输出发送到stdout - 那么问题是:如何处理由多个映射器生成的输出

这是一个想法:为什么不只是"顺其自然"这里?让输出转到hdfs。添加 TotalOrderPartitioner reducer以组合所有输出文件。然后你在输出结果上输入hdfs -cat。