0
我通过AWSCLI向EMR提交Spark作业,EMR步骤和spark配置作为单独的json文件提供。出于某种原因,我的主类的名字作为不必要的命令行参数传递给我的Spark jar,导致作业失败。AWS EMR Spark步骤参数错误
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 \
JSON文件描述我EMR步骤:
[
{
"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中定义的主类会分别泄漏到我的提供了命令行参数。
这是怎么回事?