我正在使用 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
或者
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 流。