2016-02-06 4 views
0

Я хочу передать свою работу по потоку хаоса. Например я запустить команду Hadoop банку Hadoop-streaming.jar -mapper map1.py -reducer reducer.py -input хх -output/output1Pipe command line hasoop streaming job

Но я хочу, чтобы использовать выход из одного шага для ввода моего второго шага задания mapreduce без сохранения в hdfs, может выводиться как stdout. Есть ли что-то вроде linux pipe? таких как hadoop jar hadoop-streaming.jar -mapper map1.py -reducer reducer.py -input xx | Hadoop банка Hadoop-streaming.jar -mapper map2.py -reducer reducer2.py -output/выход

ответ

0

У меня был такая же проблема, и в конечном итоге с помощью сценария Баша/оболочки для запуска потоковой команды 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 становится файл part0000.php для следующей команды Hadoop.