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

2024-09-30 03:22:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我查阅了文档,上面说它是为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 streaming 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

注意:-daily是我的hdfs目录,用于存储数据集和程序结果

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


Tags: topath代码pyhadoopinputlinejar
1条回答
网友
1楼 · 发布于 2024-09-30 03:22:23

says it is meant for aws, gcp

这些都是例子。对于那些人来说,这不是意味着。请注意运行作业的-r local-r hadoop标志

https://mrjob.readthedocs.io/en/latest/guides/runners.html#running-on-your-own-hadoop-cluster

there should be a way to make it run in our own locally created hadoop cluster in our own virtual box

设置HADOOP_HOMEHADOOP_CONF_DIRxml文件以指向要针对其运行代码的集群,然后使用-r hadooprunner标志,它将使用hadoop二进制文件和hadoop流jar文件查找并运行代码

more than 2 values required to unpack. And that error is because it is unable to take date set given -input flag

无法查看您的输入,但如果任何一行上的制表符少于三个,则此行将导致该错误(并且不需要等号左边的括号)

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

我建议首先使用本地/内联运行程序测试代码

The shell command I am using :-

bin/hadoop jar /usr/local/Cellar/hadoop/3.1.0/libexec/share/hadoop/tools/lib/hadoop- streaming.jar

Mrjob将为您构建并提交

您只需要使用输入文件运行python MovieSimilar.py

相关问题 更多 >

    热门问题