私はAWSCLI、EMRステップを介してEMRにスパークジョブを送信しています。また、スパーク設定は別々のjsonファイルとして提供されています。何らかの理由で、メインクラスの名前が不要なコマンドライン引数としてSpark jarに渡され、失敗したジョブが発生します。AWS EMRスパークステップargsバグ
AWSCLIコマンド:
[
{
"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"
]
}
]
私のメインクラスの引数パーサがエラーをスロー(及び提供されたパラメータを印刷):私のEMR手順を説明
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ファイル
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で定義したメインクラスは何らかの理由で別々にリークします提供されたコマンドライン引数。
どうしたのですか?