Как сделать 3-х этапную Карту Сокращения потоковой передачи?
Я очень новичок в Hadoop.
В настоящее время у меня есть картограф и редуктор и сумматор. И я мог сделать cat file | mapper.py | reducer.py | combiner.py
произвести результат. И стадия сокращения смущающе парализует. Итак, может кто-нибудь сказать мне, как это сделать в потоковой передачи Hadoop, если у меня есть кластер Hadoop?
1 ответ
Потоковая передача hadoop поддерживает stdin/stdout. Таким образом, вы можете повторно использовать ваши mapper.py, reducer.py и combiner.py
Рассмотрим подпись:
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \
-input myInputDirs \
-output myOutputDir \
-mapper org.apache.hadoop.mapred.lib.IdentityMapper \
-reducer org.apache.hadoop.mapred.lib.IdentityReducer \
-D stream.map.output.field.separator=. \
-D stream.num.map.output.key.fields=4
Таким образом, вы можете использовать эту подпись для выполнения первых двух шагов, т.е. mapper.py и reducer.py.
--mapper mapper.py --reducer reducer.py
Затем вы можете создать сумматор, добавив еще одну потоковую передачу hadoop с помощью шага редуктора.
<first part> | -- reducer 'combiner.py'