我想使用hadoop流方法在Google Cloud Dataproc中运行python map reduce作业。我的 map 缩小python脚本,输入文件和作业结果输出位于Google Cloud Storage中。

我试图运行此命令

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

但是我得到了这个错误输出:



云连接器在hadoop流中不起作用吗?还有其他方法可以使用hadoop流和python脚本以及位于Google Cloud Storage中的输入文件来运行python map reduce作业吗?

谢谢

最佳答案

hadoop-streaming中的-file选项仅适用于本地文件。但是请注意,其帮助文本中提到不建议使用-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

09-12 12:11