首页 > 解决方案 > 运行MRJob程序时,无法创建目录,失败

问题描述

我有以下程序:

from mrjob.job import MRJob
from mrjob.step import MRStep

class RatingsBreakdown(MRJob):
    def steps(self):
        return [
                MRStep(mapper=self.mapper_get_ratings,
                       reducer=self.reducer_count_ratings)
                ]

    def mapper_get_ratings(self, _, line):
        (userID, movieID, rating, timestamp) = line.split('\t')
        yield rating, 1


    def reducer_count_ratings(self, key, values):
        yield key, sum(values)


if __name__ == '__main__':
    RatingsBreakdown.run()

我正在尝试在 Ubuntu 18.04 上运行它:

sudo python3 RatingsBreakdown.py -r hadoop --hadoop-bin /usr/local/hadoop/bin/hadoop u.data

其中 u.data 是数据源。

程序停止,我不断收到以下错误:

OSError: Could not mkdir 
hdfs:///user/root/tmp/mrjob/RatingsBreakdown.root.20191110.010957.606661/files/wd

当我尝试手动运行 mkdir 命令时,我得到:

mkdir: Incomplete HDFS URI, no host: hdfs:///user/root/tmp/mrjob/RatingsBreakdown.root.20191110.010957.606661/files/w

我需要提一下,我有一个功能性的 Hadoop 安装(它适用于基于 Java 的程序),并且 Python 环境也设置得很好。如果我不使用 hadoop 运行程序,程序将正确执行。Python(MRJob)和Hadoop之间似乎存在交互问题。

我搜索和搜索,但似乎找不到任何有用的东西。请帮我!谢谢

标签: pythonubuntuhadoophadoop-streamingmrjob

解决方案


推荐阅读