Передать путь ввода Hadoop в качестве аргумента Python - PullRequest
0 голосов
/ 03 апреля 2019

Привет! Я пытаюсь завершить задачу уменьшения карты с помощью Python, чтобы моя программа принимала 2 аргумента: строку и путь к папке.Он должен просканировать все папки в каталоге и найти в них строку.

Я запускаю свой код из терминала, как показано ниже:

python mapper.py "AA" /home/habil/Downloads/hadoop_test/ | python reducer.py

И это дает мне результат, как показано ниже:

Filename    Count
--------    ---------
seq1.txt    153
seq2.txt    48
seq3.txt    83
seq4.txt    93
seq5.txt    102

Однако я должен реализовать это в hdfs, и меня смущает ввод команды hdfs, так что я должен дать моему коду путь к папке в качестве аргумента (чтобы получить имена файлов), а также hadoopтребует hdfs -input.Когда я запускаю команду ниже, я получаю сообщение об ошибке:

 hadoop jar /usr/local/hadoop/hadoop-2.9.2/share/hadoop/tools/lib/hadoop-streaming-2.9.2.jar  -mapper "mapper.py AA /assignment/hadoop_test/" -reducer reducer.py -input /assignment/hadoop_test/  -output /assignment/hadoop_test/output

Как я могу исправить эту проблему или как я могу передать путь ввода Hadoop напрямую в качестве аргумента моего кода в python?Любая помощь или подсказка приветствуется.Заранее спасибо.

1 Ответ

0 голосов
/ 03 апреля 2019

Вы можете использовать sys.stdin для чтения вывода mapper.py

import sys
print("You typed", sys.stdin.read())
...