我正在尝试使用spark-submit
来运行JAR文件:
PS:它们都运行相同的Spark
和Scala
版本(Spark-2.3.2和Scala-2.11.12)
这是我的build.sbt
:
name := "CMDW-Security"
version := "19.11.25"
scalaVersion := "2.11.12"
libraryDependencies ++= Seq(
"org.scalaj" %% "scalaj-http" % "2.4.2",
"org.scalatest" %% "scalatest" % "3.0.5" % "test",
"com.typesafe.play" %% "play-json" % "2.7.3",
"org.passay" % "passay" % "1.5.0"
)
运行我到处都提供的jar文件的命令是相同的:
spark-submit --master local[*] --deploy-mode client --class com.ibm.cmdwldap.executable.Test <jar-name>.jar
虽然它在两台本地计算机上都成功运行,但由于崩溃日志,在尝试在Analytics Engine火花上运行时出现了错误:
Exception in thread "main" java.lang.NoSuchMethodError: play.api.libs.json.JsLookup$.apply$extension1(Lplay/api/libs/json/JsLookupResult;Ljava/lang/String;)Lplay/api/libs/json/JsValue;
at com.ibm.cmdwldap.restapi.Authorization.getAuthToken(Authorization.scala:41)
at com.ibm.cmdwldap.executable.Test$.main(Test.scala:18)
at com.ibm.cmdwldap.executable.Test.main(Test.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:904)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:198)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:228)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
由于使用spark-submit
在本地计算机上运行了相同的JAR文件,因此我不确定是什么导致了Google Analytics(分析)错误。
我也不需要指定库JAR,因为当我运行sbt assembly
命令时,它们都已在可执行JAR中进行编译。
编辑1 :当我使用
运行时,还需要提及java -jar <name of jar>
该程序在所有3台计算机上都成功执行,但是在使用spark-submit
执行时,它在Analytics Engine上失败。我正在寻找与Oozie合作的时间表,这就是为什么让spark-submit
在Analytics Engine上工作对我来说很重要。
答案 0 :(得分:-1)
要使该作业在本地计算机上运行,您可能需要在spark提交中提供master Local [*],但是当您在其他计算机上运行时,我想可以用master yarn替换此命令。这对我有用。