如何 运行 mrjob library python map reduce in ubuntu standalone local hadoop cluster

How to run mrjob library python map reduce in ubuntu standalone local hadoop cluster

我查看了文档,它说它适用于 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 codes.But 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 个值

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_DIR xml 文件指向你想要 运行 代码的集群,然后使用 -r hadoop 运行ner 标志,它将使用 hadoop 二进制文件和 hadoop-streaming 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')

我建议先使用 local/inline 运行ner 测试您的代码

The shell command I am using :-

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

Mr​​job 将为您构建并提交。

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