簡體   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