gpt4 book ai didi

hadoop - 在 python MRJob 中,如何设置临时输出目录的选项

转载 作者:可可西里 更新时间:2023-11-01 16:59:44 28 4
gpt4 key购买 nike

我正在使用 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 是找到的标准 here .可能是我缺少有关 MRJobj 的一些基本知识,或者我可能不得不返回到 hadoop 流。

最佳答案

mrjob 在与 HDFS 交互时调用 hadoop 二进制文件。 hadoop 命令需要知道 NameNode 在网络上的位置,因此像 hdfs:///some-path 这样的 URI 不需要完整的主机(像 hdfs://your-namenode:9000/some-path。该命令通过读取您的配置 XML 文件找出 NameNode 的位置。

有很多 conflicting reports on the internet关于which environment variable设置,但在我运行最新版本的 mrjob 和 Apache Hadoop 2.4.1 的环境中,我必须设置 HADOOP_PREFIX 环境变量。您可以使用以下命令进行设置:

export HADOOP_PREFIX=/path/to/your/hadoop

设置完成后,如果您输入以下内容,您就会知道设置正确:

ls $HADOOP_PREFIX/etc/hadoop

这会显示您的配置 XML 文件。

现在运行你的命令。它应该工作。

关于hadoop - 在 python MRJob 中,如何设置临时输出目录的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25753228/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com