2016-02-06 123 views
0

我想管我的hadoop流作業。 例如我已經運行命令 的hadoop罐子Hadoop的streaming.jar -mapper map1.py -reducer reducer.py - 輸入XX -output/OUTPUT1管道命令行hadoop流作業

但是我想使用從步驟一個輸出作爲我的第二步mapreduce作業的輸入而不存儲在hdfs中可能會輸出爲stdout。 有沒有像linux管道的東西? 如 hadoop jar hadoop-streaming.jar -mapper map1.py -reducer reducer.py -input xx | Hadoop的罐子Hadoop的streaming.jar -mapper map2.py -reducer reducer2.py - 輸出/輸出

回答

0

我有同樣的問題,並最終用一個bash/shell腳本來運行Hadoop的流命令。我創建了一個包含下列文件名爲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 

的部分00000的文件將成爲下一個Hadoop的命令part0000.php文件。