繁体   English   中英

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

[英]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 流 jar 和普通的 python 代码,我可以运行 python 代码。但 mrjob 不接受来自命令行的数据集位置,并提供 2 个以上的解包所需的值。 这个错误是因为它无法在给定 -input 标志的情况下获取日期集

我正在使用的 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

注意:-每天是我的 hdfs 目录,其中存储数据集和程序结果

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

说它适用于 aws,gcp

这些都是例子。 这并不意味着那些。 注意用于运行作业的-r local-r hadoop标志

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

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

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

more than 2 values required to unpack 这个错误是因为它无法在给定 -input 标志的情况下获取日期集

看不到您的输入,但是如果任何行上的选项卡少于三个,则此行会导致该错误(并且您不需要等号左侧的括号)

(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM