在google cloud dataproc环境中使用hadoop流运行python map reduce作业时出错

qjp7pelc  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(380)

我想使用hadoop流方法在googleclouddataproc中运行pythonmapreduce作业。我的map reduce python脚本、输入文件和作业结果输出都位于google云存储中。
我试着运行这个命令

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar -file gs://bucket-name/intro_to_mapreduce/mapper_prod_cat.py -mapper gs://bucket-name/intro_to_mapreduce/mapper_prod_cat.py -file gs://bucket-name/intro_to_mapreduce/reducer_prod_cat.py -reducer gs://bucket-name/intro_to_mapreduce/reducer_prod_cat.py -input gs://bucket-name/intro_to_mapreduce/purchases.txt -output gs://bucket-name/intro_to_mapreduce/output_prod_cat

但我得到了一个错误输出:
文件:/home/ramaadhitia/gs:/bucket name/intro\u to\u mapreduce/mapper\u prod\u cat.py不存在或不可读。
尝试-帮助获取更多信息流命令失败!
云连接器在hadoop流媒体中不工作吗?使用hadoop流式处理google云存储中的python脚本和输入文件,有没有其他方法来运行python map reduce作业?
谢谢您

bnl4lu3b

bnl4lu3b1#

这个 -file 来自hadoop streaming的选项只适用于本地文件。但是请注意,它的帮助文本提到 -file 不赞成使用标志,而赞成使用泛型 -files 选项。使用泛型 -files 选项允许我们指定要暂存的远程(hdfs/gs)文件。还要注意,泛型选项必须在应用程序特定标志之前。
你的召唤会变成:

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
    -files gs://bucket-name/intro_to_mapreduce/mapper_prod_cat.py,gs://bucket-name/intro_to_mapreduce/reducer_prod_cat.py \
    -mapper mapper_prod_cat.py \
    -reducer reducer_prod_cat.py \
    -input gs://bucket-name/intro_to_mapreduce/purchases.txt \
    -output gs://bucket-name/intro_to_mapreduce/output_prod_cat

相关问题