将Hadoop流作业的输出发送到STDOUT
在进行流式处理的工作时,你需要指定一个输出目录。如果我想把映射器的结果输出到标准输出(stdout),而不是输出到HDFS目录,这样可以吗?我想这样做是为了能够把结果传递给其他程序。
1 个回答
0
我在Hadoop里写过很多流处理的工作。你想要的自定义流程到底是要干什么,这点还不太清楚。
我们来仔细看看,假设你是用Python写的mapper和reducer(如果是用shell脚本的话,把.py改成.sh就行):
hadoop jar hadoop-*streaming*.jar
-file mapper.py -mapper mapper.py \
-input /user/myuser/input/* -output /user/myuser/output
在这种情况下,输出会发送到HDFS——这正是你说的你不想要的。
所以如果我们把输出发送到标准输出(stdout),那么问题就来了:你怎么处理多个mapper生成的输出呢?
这里有个想法:为什么不顺其自然呢?让输出去HDFS吧。然后加一个TotalOrderPartitioner的reducer来合并所有的输出文件。这样你就可以用hdfs -cat来查看输出结果了。