如何在ubuntu独立本地hadoop集群中运行mrjob库python map reduce

0g0grzrc  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(367)

我查阅了文件,上面说是为aws,gcp准备的。但他们也在内部使用它。因此,应该有一种方法让它在我们自己的虚拟机中本地创建的hadoop集群中运行
了解mrjob如何在代码中使用的一些代码:-

class MovieSimilar(MRJob):
 def mapper_parse_input(self, key, line):
    (userID, movieID, rating, timestamp) = line.split('\t')
    yield  userID, (movieID, float(rating))
    ..........
    ..........
if __name__ == '__main__':
  MovieSimilar.run()

有了hadoop流jar和普通的python代码,我就可以运行python代码了。但是mrjob不接受来自命令行的数据集位置,并且给出了解包所需的2个以上的值。这个错误是因为在给定的输入标志下,它无法获取日期集
我使用的shell命令:-

bin/hadoop jar /usr/local/Cellar/hadoop/3.1.0/libexec/share/hadoop/tools/lib/hadoop-
streaming.jar \
-file /<path_to_mapper>/MovieSimilar.py \
-mapper /<path_to_mapper>/MovieSimilar.py \
-reducer /<path_to_reducer>/MovieSimilar.py  \
-input daily/<dataset-file>.csv \
-output daily/output

note:- daily 是存储数据集和程序结果的hdfs目录
我收到错误消息:-解包需要2个以上的值

pexxcrt2

pexxcrt21#

说它是为aws,gcp准备的
这些都是例子。这不是为那些人准备的。注意 -r local 以及 -r hadoop 运行作业的标志
https://mrjob.readthedocs.io/en/latest/guides/runners.html#running-在您自己的hadoop集群上
应该有办法让它在我们自己的虚拟机中本地创建的hadoop集群中运行
设置您的 HADOOP_HOME ,和 HADOOP_CONF_DIR 指向要针对其运行代码的集群的xml文件,然后使用 -r hadoop runner标志,它将使用hadoop二进制文件和hadoop流jar文件查找并运行您的代码 more than 2 values required to unpack . 这个错误是因为在给定的输入标志下,它无法获取日期集
无法查看您的输入,但如果任何一行上的制表符少于三个,则此行将导致该错误(并且您不需要在等号后面加括号)

(userID, movieID, rating, timestamp) = line.split('\t')

我建议首先使用本地/内联运行程序测试代码
我使用的shell命令:- bin/hadoop jar /usr/local/Cellar/hadoop/3.1.0/libexec/share/hadoop/tools/lib/hadoop- streaming.jar mrjob将为您构建并提交。
你只需要跑 python MovieSimilar.py 输入文件

相关问题