Spark 2.0.0打包了SBT-Assembly的流作业缺少Scala运行时方法 [英] Spark 2.0.0 streaming job packed with sbt-assembly lacks Scala runtime methods
本文介绍了Spark 2.0.0打包了SBT-Assembly的流作业缺少Scala运行时方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在电光流媒体2.0.0作业中使用->
,或者使用spark-streaming-kafka-0-8_2.11
v2.0.0,并通过spark-submit
提交时,出现以下错误:
线程"Main"中的异常org.apache.spk.SparkException:作业因阶段失败而中止:阶段72.0中的任务0失败1次,最近的失败:阶段72.0中丢失的任务0.0(TID37,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
推荐答案
- 电光作业应该在没有scala运行时的情况下打包,也就是说,如果您使用sbt-Assembly进行打包,请添加以下内容:
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
- 我刚刚让我的
SPARK_HOME
环境变量指向电光1.6.2,spark-submit
从哪里运行并不重要,SPARK_HOME
应该正确设置。
这篇关于Spark 2.0.0打包了SBT-Assembly的流作业缺少Scala运行时方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文