AWS EMR Spark未使用自定义Jar加载MainClass

时间:2018-03-17 01:31:07

标签: amazon-web-services apache-spark emr amazon-emr

我正在尝试使用单个自定义步骤创建一个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位于正确的位置。 我在使用标准语法时也得到了相同的结果。

1 个答案:

答案 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