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

2 投票
1 回答
1150 浏览
提问于 2025-04-18 09:11

在进行流式处理的工作时,你需要指定一个输出目录。如果我想把映射器的结果输出到标准输出(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来查看输出结果了。

撰写回答