Я использую MRJob для запуска очень простого подсчета слов в качестве стандартного задания Hadoop:
python word_count.py -r hadoop hdfs:///path-to-my-data
Эта ошибка печати указывает на то, что он не может создать временный каталог для временного вывода:
STDERR: mkdir: Incomplete HDFS URI, no host: hdfs:///user/path-to-tmp-dir
...
...
subprocess.CalledProcessError: Command '['/opt/mapr/hadoop/hadoop-0.20.2/bin/hadoop', 'fs', '-mkdir', 'hdfs:///user/
Предположим, я не могу создать каталог, требуемый по умолчанию для MRJob. Можно ли передать опцию MRJob через командную строку? Единственный вариант, который я нашел, — это base_tmp_dir. В описании упоминается «Путь для размещения локальных временных каталогов». где «локальный» - это не совсем то, что я ищу, поскольку временный выходной каталог должен находиться в hdfs. Тем не менее, я хотел попробовать (:
python word_count.py --base-tmp-dir=./tmp/ data.txt
or
python word_count.py -r hadoop --base-tmp-dir=hdfs:///some-path hdfs:///path-to-data
но не удалось, так как MRJob жалуется, что такой опции нет:
word_count.py: error: no such option: --base-tmp-dir
word_count.py
– это стандартный вариант, который можно найти здесь. Возможно, мне не хватает некоторых важных знаний о MRJobj, или мне придется вернуться к потоковой передаче Hadoop.