我正在尝试使用单个自定义步骤创建一个emr spark集群。 已成功创建群集,但未正确定义步骤。
更新
我尝试通过Web控制台午餐同一个群集并获得相同的结果。当我保存步骤时指定Jar位置时,JAR位置设置为aws emr create-cluster --name 'emr-test' \
--applications Name=Spark \
--release-label emr-5.11.1 \
--auto-terminate \
--instance-type m3.xlarge \
--instance-count 1 \
--ec2-attributes SubnetId=subnet-000000 \
--steps '[{
"Type": "SPARK",
"Name": "spark-program",
"Args": ["--class","--init-keyspaces"],
"Jar": "s3://mybucket/snapshots/0.1.0-SNAPSHOT/2.11/my-spark-assembly-0.1.0-SNAPSHOT.jar",
"ActionOnFailure": "TERMINATE_CLUSTER",
"MainClass":"com.myspark.data.consumers.jobs.MyJob"
}]' \
--use-default-roles \
--log-uri 's3://mybucket/logs' \
--tags Name='spark-program' Environment='test'
,并且提供的JAR路径将添加到Arguments列表中。
CLI命令:
JAR location: command-runner.jar
Main class: None
Arguments: spark-submit --class --init-keyspaces
Action on failure: Terminate cluster
结果:
当我在控制台的“步骤”选项卡下查看时。
JAR location: s3://mybucket/snapshots/0.1.0-SNAPSHOT/2.11/my-spark-assembly-0.1.0-SNAPSHOT.jar
Main class: com.myspark.data.customer.jobs.MyJob
Arguments: spark-submit --class --init-keyspaces
Action on failure: Terminate cluster
预期:
{{1}}
我已经确认S3存储桶和JAR位于正确的位置。 我在使用标准语法时也得到了相同的结果。
答案 0 :(得分:0)
发现我的期望不正确。通过CLI创建新作业并仅包含JAR args时,会创建一个Custom JAR项目。如果spark args(即--conf
)也传入CLI,则会创建Spark作业。
来自Web控制台的这两种作业类型看起来不同。例如,JAR location
对于Spark作业设置为command-runner.jar
,但对于自定义JAR,它设置为s3存储桶的路径。
AWS Custom Spark Step文档 https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html