我想知道在使用自定义 jar 运行流式作业时如何指定 mapreduce 配置,例如mapred.task.timeout 、 mapred.min.split.size等。
当我们使用 ruby 或 python 等外部脚本语言运行时,我们可以使用以下方式来指定这些配置:
ruby elastic-mapreduce -j --stream --step-name "mystream" --jobconf mapred.task.timeout=0 --jobconf mapred.min.split.size=52880 --mapper s3://somepath/mapper. rb --reducer s3:somepath/reducer.rb --input s3://somepath/input --output s3://somepath/output
我尝试了以下方法,但都没有奏效:
ruby elastic-mapreduce --jobflow --jar s3://somepath/job.jar --arg s3://somepath/input --arg s3://somepath/output --args -m,mapred.min.split .size=52880 -m,mapred.task.timeout=0
ruby elastic-mapreduce --jobflow --jar s3://somepath/job.jar --arg s3://somepath/input --arg s3://somepath/output --args -jobconf,mapred.min.split .size=52880 -jobconf,mapred.task.timeout=0
我还想知道如何使用 EMR 中的自定义 jar 将 java 选项传递给流式作业。在 hadoop 上本地运行时,我们可以按如下方式传递它:
bin/hadoop jar job.jar input_path output_path -D< some_java_parameter >=< some_value >