包含 sbt-assembly 的 Spark 2.0.0 流作业缺少 Scala 运行时方法
Spark 2.0.0 streaming job packed with sbt-assembly lacks Scala runtime methods
在 Spark Streaming 2.0.0 作业中使用 ->
,或使用 spark-streaming-kafka-0-8_2.11
v2.0.0,并使用 spark-submit
提交时,出现以下错误:
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 72.0 failed 1 times, most recent failure: Lost task 0.0 in stage 72.0 (TID 37, localhost): java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
我在 GitHub 回购中简要说明了这种现象:spark-2-streaming-nosuchmethod-arrowassoc
仅将提供的依赖项放入 build.sbt
"org.apache.spark" %% "spark-core" % "2.0.0" % "provided",
"org.apache.spark" %% "spark-streaming" % "2.0.0" % "provided"
在驱动程序代码中的任何地方使用 ->
,用 sbt-assembly
打包并提交作业导致错误。这本身并不是一个大问题,使用 ArrayAssoc
可以避免,但是 spark-streaming-kafka-0-8_2.11
v2.0.0 内部某处有它,并产生相同的错误。
这样做:
wordCounts.map{
case (w, c) => Map(w -> c)
}.print()
然后
sbt assembly
然后
spark-2.0.0-bin-hadoop2.7/bin/spark-submit \
--class org.apache.spark.examples.streaming.NetworkWordCount \
--master local[2] \
--deploy-mode client \
./target/scala-2.11/spark-2-streaming-nosuchmethod-arrowassoc-assembly-1.0.jar \
localhost 5555
- Spark 作业应该在没有 Scala 运行时间的情况下打包,即,如果您使用 sbt-assembly 进行打包,请添加:
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
- 我刚刚让我的
SPARK_HOME
环境变量指向 Spark 1.6.2,无论你从哪里 运行 spark-submit
,都应该正确设置 SPARK_HOME
.
在 Spark Streaming 2.0.0 作业中使用 ->
,或使用 spark-streaming-kafka-0-8_2.11
v2.0.0,并使用 spark-submit
提交时,出现以下错误:
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 72.0 failed 1 times, most recent failure: Lost task 0.0 in stage 72.0 (TID 37, localhost): java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
我在 GitHub 回购中简要说明了这种现象:spark-2-streaming-nosuchmethod-arrowassoc
仅将提供的依赖项放入 build.sbt
"org.apache.spark" %% "spark-core" % "2.0.0" % "provided",
"org.apache.spark" %% "spark-streaming" % "2.0.0" % "provided"
在驱动程序代码中的任何地方使用 ->
,用 sbt-assembly
打包并提交作业导致错误。这本身并不是一个大问题,使用 ArrayAssoc
可以避免,但是 spark-streaming-kafka-0-8_2.11
v2.0.0 内部某处有它,并产生相同的错误。
这样做:
wordCounts.map{
case (w, c) => Map(w -> c)
}.print()
然后
sbt assembly
然后
spark-2.0.0-bin-hadoop2.7/bin/spark-submit \
--class org.apache.spark.examples.streaming.NetworkWordCount \
--master local[2] \
--deploy-mode client \
./target/scala-2.11/spark-2-streaming-nosuchmethod-arrowassoc-assembly-1.0.jar \
localhost 5555
- Spark 作业应该在没有 Scala 运行时间的情况下打包,即,如果您使用 sbt-assembly 进行打包,请添加:
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
- 我刚刚让我的
SPARK_HOME
环境变量指向 Spark 1.6.2,无论你从哪里 运行spark-submit
,都应该正确设置SPARK_HOME
.