如何通过Java SDK正确启动使用Spark的EMR集群(command-runner.jar与直接引用JAR路径)

时间:2018-07-19 17:46:10

标签: java apache-spark hadoop jar amazon-emr

如果我尝试使用Java SDK来在EMR上运行Spark作业,哪种方法更正确?我已经看过两种方法,但目前都无法使用,因此我不确定在创建HadoopJarStepConfig时采用哪种方法。

使用command-runner.jar (如以下两个示例所示:

https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html

https://www.javatips.net/api/dl4j-examples-master/dl4j-spark-examples/dl4j-spark/src/main/java/org/deeplearning4j/emr/EmrSparkExample.java

HadoopJarStepConfig runExampleConfig = new HadoopJarStepConfig()
        .withJar("command-runner.jar")
        .withArgs(
            "spark-submit",
            "--master", "yarn",
            "--deploy-mode", "cluster",
            "--driver-class-path", JAR_LOCATION,  // unsure if this helps
            "--class", MAIN_CLASS,
            JAR_LOCATION,
            "-useSparkLocal", "false"
        );

没有command-runner.jar (如此处完成:https://sysadmins.co.za/aws-create-emr-cluster-with-java-sdk-examples/

 HadoopJarStepConfig runExampleConfig = new HadoopJarStepConfig()
        .withJar(JAR_LOCATION)
        .withMainClass(MAIN_CLASS);

在两种情况下,我都创建一个带有发布标签RunJobFlowRequest的{​​{1}},一个Spark emr-5.15.0以及其他与问题无关的设置。此外,JAR存储在S3存储桶中。


对于上下文,第一种方法导致我的JAR由于某种原因而被跳过(此处为Trying to run Spark on EMR using the AWS SDK for Java, but it skips the remote JAR stored on S3的详细信息);第二种方法导致org.apache.spark.SomeClass的ClassNotFoundException。我认为这可能与我的JAR是超级/超级JAR有关,并且我没有在阴影任何东西...

0 个答案:

没有答案