Spark 2.0.0打包了SBT-Assembly的流作业缺少Scala运行时方法 [英] Spark 2.0.0 streaming job packed with sbt-assembly lacks Scala runtime methods

查看:24
本文介绍了Spark 2.0.0打包了SBT-Assembly的流作业缺少Scala运行时方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在电光流媒体2.0.0作业中使用->,或者使用spark-streaming-kafka-0-8_2.11v2.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.11v2.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

推荐答案

  1. 电光作业应该在没有scala运行时的情况下打包,也就是说,如果您使用sbt-Assembly进行打包,请添加以下内容:assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
  2. 我刚刚让我的SPARK_HOME环境变量指向电光1.6.2,spark-submit从哪里运行并不重要,SPARK_HOME应该正确设置。

这篇关于Spark 2.0.0打包了SBT-Assembly的流作业缺少Scala运行时方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆