python - 运行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之间似乎存在交互问题。
我搜索和搜索,但似乎找不到任何有用的东西。请帮我!谢谢
解决方案
推荐阅读
- java - 如何通过反射从父类调用子类方法
- android - 任务“:app:transformClassesWithDesugarForDebug”执行失败
- javascript - 使用量角器在 Safari 上的 iframe 中找不到元素
- hibernate - spring data 和 hibernate 将字符串参数更改为 unicode\ASCII
- machine-learning - 如何向 keras Retina 网络添加 dropout 技术?
- javascript - 我应该如何在前端处理 tslint no-null-keyword?
- html - 下拉菜单只在每个按钮悬停时打开一个下拉框
- c# - SteamVR 2.2b4 SteamVR_Action_Boolean 错误
- c# - 是否可以使用“RotateAround”进行“LookAt”目标变换?
- excel - 查找范围对象的行和列