Как сделать 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'
Другие вопросы по тегам