【发布时间】:2017-06-09 07:43:46
【问题描述】:
我正在通过 AWSCLI 向 EMR 提交 Spark 作业,EMR 步骤和 spark 配置作为单独的 json 文件提供。由于某种原因,我的主类的名称作为不必要的命令行参数传递给我的 Spark jar,导致作业失败。
AWSCLI 命令:
aws emr create-cluster \
--name "Spark-Cluster" \
--release-label emr-5.5.0 \
--instance-groups \
InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge \
InstanceGroupType=CORE,InstanceCount=20,InstanceType=m3.xlarge \
--applications Name=Spark \
--use-default-roles \
--configurations file://conf.json \
--steps file://steps.json \
--log-uri s3://blah/logs \
描述我的 EMR 步骤的 json 文件:
[
{
"Name": "RunEMRJob",
"Jar": "s3://blah/blah.jar",
"ActionOnFailure": "TERMINATE_CLUSTER",
"Type": "CUSTOM_JAR",
"MainClass": "blah.blah.MainClass",
"Args": [
"--arg1",
"these",
"--arg2",
"get",
"--arg3",
"passed",
"--arg4",
"to",
"--arg5",
"spark",
"--arg6",
"main",
"--arg7",
"class"
]
}
]
我的主类中的参数解析器抛出错误(并打印提供的参数):
Exception in thread "main" java.lang.IllegalArgumentException: One or more parameters are invalid or missing:
blah.blah.MainClass --arg1 these --arg2 get --arg3 passed --arg4 to --arg5 spark --arg6 main --arg7 class
所以由于某种原因,我在 steps.json 中定义的主类泄漏到我单独提供的命令行参数中。
怎么了?
【问题讨论】:
标签: amazon-web-services apache-spark emr amazon-emr