0

我正在尝试使用spark-submiton 运行 JAR 文件:

  1. 我的本地机器 (Mac OS)
  2. 另一台本地机器 (Windows)
  3. IBM Cloud 分析引擎控制台

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 spark 上运行时出错,并带有以下崩溃日志:

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)

我不确定是什么导致 Analytics Engine 上出现此错误,因为相同的 JAR 文件使用spark-submit.

我也不需要指定库 JAR,因为当我运行sbt assembly命令时,它们都已编译到可执行 JAR 中。

编辑1:还需要提到,当我运行时

java -jar <name of jar>

该程序在所有 3 台机器上都成功执行,但是当使用 执行时spark-submit,它在分析引擎上失败。我正在寻找与 Oozie 的日程安排,这就是为什么spark-submit在 Analytics Engine 上工作对我来说很重要。

4

1 回答 1

-1

为了让作业在本地机器上运行,您可能需要在 spark 提交中提供 master Local[*],但是当您在其他机器上运行时,我猜这个命令可以替换为 master yarn。这对我有用。

于 2019-11-27T11:15:05.800 回答