管道命令行hadoop流媒体工作

时间:2016-02-06 08:46:25

标签: python pipe stdout hadoop-streaming

我想管道我的hadoop流媒体工作。 例如,我运行了一个命令 hadoop jar hadoop-streaming.jar -mapper map1.py -reducer reducer.py - 输入xx -output / output1

但是我想使用第一步的输出作为mapreduce作业的第二步的输入而不存储在hdfs中,可能输出为stdout。 有什么像linux管道? 如 hadoop jar hadoop-streaming.jar -mapper map1.py -reducer reducer.py - 输入xx | hadoop jar hadoop-streaming.jar -mapper map2.py -reducer reducer2.py - 输出/输出

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,最后使用bash / shell脚本来运行hadoop streaming命令。我创建了一个名为hadoop.sh的文件,其中包含以下内容:

rm -r output | bin/hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar -files /hadoop-2.7.3/script/mapper.php -input /data/* -output output -mapper "php mapper.php" -jobconf mapred.reduce.tasks=1
#add a beginning/ending php to the file
ex -sc '1i|<?php' -c '$a|?>' -cx output/part-00000
#move the file from /output to /script
mv /hadoop-2.7.3/output/part-00000 /hadoop-2.7.3/script/part-00000.php

part-00000文件成为下一个hadoop命令的part0000.php文件。