如果我尝试使用sdkforjava在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
带释放标签 emr-5.15.0
,Spark Application
,以及其他与问题无关的设置。此外,jar存储在s3桶中。
对于context,第一种方法会导致出于某种原因跳过myjar(这里详细介绍了如何使用awsdkforjava在emr上运行spark,但是它会跳过存储在s3上的远程jar);第二种方法导致org.apache.spark.someclass出现classnotfoundexception。我想这可能是因为我的jar是超级/超级jar,而且我没有给任何东西着色。。。
暂无答案!
目前还没有任何答案,快来回答吧!