标题几乎说明了一切:我们正在将一些作业从 Cloudera 迁移到 GCP,为此,我们正在用 gsutil 对应项替换所有 hadoop 命令。
但是,我在使用 hadoop jar 命令时遇到了一些困难,因为我没有找到有效的替代方法。
假设我在以前的工作中有这个:
hadoop jar /some/cloudera/path/thefile.jar \
-files $path1/file1.sh,$path2/file2.py \
-D mapred.job.queue.name=${ENVVAR} \
-D mapred.reduce.tasks=0 \
-D stream.map.output.field.separator=";" \
-input ${inputPath}/* \
-output ${outputPath} \
-mapper file1.sh
在 GCP 上执行相同操作的最佳方式是什么?
(这是我的第一个问题,不要刻薄:) )
更新:
你永远不会停止学习是多么真实!最重要的是,你的老问题对你来说真的很愚蠢。 简单的解决方案是
gcloud dataproc jobs submit hadoop \
--cluster=[CLUSTER_NAME] \
--region=[REGION] \
--jar=file:///usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
--files $path1/file1.sh,$path2/file2.py \
--properties mapreduce.job.reduces=0,stream.map.output.field.separator=";" \
-- -input {theInputPathButOnGs}/* -output {theOutputPathButOnGs} -mapper file1.sh
一开始我可能想不通,因为我没有找到合适的例子,所以我不得不做一些尝试弄清楚key=value参数放在哪里,以及输入、输出和映射器.一切都显得那么不同。但它奏效了。感谢帮助过我的人