在运行HDP 2.2上的Spark Streaming作业时出现NoSuchMethodError错误

3
我正在尝试在HDP 2.2 Sandbox上运行一个简单的流处理作业,但是遇到了java.lang.NoSuchMethodError错误。我能够在此机器上无问题地运行SparkPi示例。
以下是我正在使用的版本-
    <kafka.version>0.8.2.0</kafka.version>
    <twitter4j.version>4.0.2</twitter4j.version>
    <spark-version>1.2.1</spark-version>
    <scala.version>2.11</scala.version>

代码片段 -

val sparkConf = new SparkConf().setAppName("TweetSenseKafkaConsumer").setMaster("yarn-cluster");
val ssc = new StreamingContext(sparkConf, Durations.seconds(5));

Node Manager UI 中的错误文本 -

线程中的异常 "Driver" scala.MatchError: java.lang.NoSuchMethodError: scala.Predef$.$conforms()Lscala/Predef$$less$colon$less; (of class java.lang.NoSuchMethodError) at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:432) 15/02/12 15:07:23 INFO yarn.ApplicationMaster: 等待 spark 上下文初始化 ... 1 15/02/12 15:07:33 INFO yarn.ApplicationMaster: 等待 spark 上下文初始化 ... 2

作业在 YARN 中被接受,但从未进入 RUNNING 状态。

我认为这可能是由于 Scala 版本差异引起的。我尝试更改 POM 配置,但仍无法修复错误。

提前感谢您的帮助。


我尝试更改POM配置,但仍无法解决错误。你做了哪些更改?根据Spark文档,“对于Scala API,Spark 1.2.0使用Scala 2.10。您需要使用兼容的Scala版本(2.10.x)。”-您正在使用2.11,这可能是您的问题。 - The Archetypal Paul
实际上,我之前为spark-streaming_2.10(使用Scala 2.10编译的Spark)指定了依赖项。我没有为Scala编译器本身指定依赖项。似乎Maven自动拉取了2.11(可能是由于其他依赖关系)。在尝试调试此问题时,我添加了对Scala编译器2.11的依赖项。现在,在您的评论后,我将该依赖项更改为2.10,并且它正在工作。非常感谢您的帮助。 - Manmohan
1个回答

3

我之前为spark-streaming_2.10(使用Scala 2.10编译的Spark)指定了依赖项,但是没有为Scala编译器本身指定依赖项。似乎Maven自动拉取了2.11版本(可能是由于其他依赖项导致的)。在尝试调试此问题时,我添加了一个Scala编译器2.11的依赖项。现在在Paul评论后,我将该Scala依赖版本更改为2.10,并且它正在工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接