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



我浏览了文档,它说它是为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()

使用hadoopstreamingjar和普通的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

注意:-dayly是我的hdfs目录,数据集和程序结果存储在这里

我收到的错误消息:-打开需要2个以上的值

表示它适用于aws、gcp

这些就是例子。这不是的意思。注意运行作业的-r local-r hadoop标志

https://mrjob.readthedocs.io/en/latest/guides/runners.html#running-在您自己的hadoop集群上

应该有一种方法可以让它在我们自己的虚拟盒子中本地创建的hadoop集群中运行

HADOOP_HOMEHADOOP_CONF_DIRxml文件设置为指向要运行代码的集群,然后使用-r hadooprunner标志,它将使用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

相关内容

  • 没有找到相关文章

最新更新