我想使用hadoop流方法运行python映射在Google Cloud Dataproc中减少作业。我的地图减少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
但是我收到了此错误输出:
文件: /home/ramaadhitia/gs:/bucket-name/intro_to_to_mapreduce/mapper_prod_cat.py 不存在,或者不可读取。
尝试-HELP以获取更多信息流命令失败!
云连接器在Hadoop流中不起作用吗?是否有其他方法可以使用python脚本和位于Google Cloud Storage中的python脚本和输入文件来减少作业?
谢谢
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