我想使用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