【发布时间】:2015-12-11 14:00:20
【问题描述】:
我正在尝试在 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));
来自节点管理器 UI 的错误文本-
线程“驱动程序”scala.MatchError 中的异常: java.lang.NoSuchMethodError: scala.Predef$.$conforms()Lscala/Predef$$less$colon$less; (班级的 java.lang.NoSuchMethodError) 在 org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:432) 15/02/12 15:07:23 INFO yarn.ApplicationMaster: 等待火花 上下文初始化 ... 1 15/02/12 15:07:33 信息 yarn.ApplicationMaster:等待火花上下文初始化... 2
作业在 YARN 中被接受,但从未进入 RUNNING 状态。
我认为这是由于 Scala 版本差异造成的。我尝试更改 POM 配置,但仍然无法修复错误。
提前感谢您的帮助。
【问题讨论】:
-
"我尝试更改 POM 配置,但仍然无法修复错误。"你做了哪些改变?根据 Spark 文档“对于 Scala API,Spark 1.2.0 使用 Scala 2.10。您将需要使用兼容的 Scala 版本 (2.10.x)。” - 您使用的是 2.11,这很可能是您的问题
-
实际上,我之前指定了 spark-streaming_2.10 的依赖项(使用 Scala 2.10 编译的 Spark)。我没有为 Scala 编译器本身指定依赖项。似乎 Maven 自动提取了 2.11(可能是由于其他一些依赖)。在尝试调试此问题时,我添加了对 Scala 编译器 2.11 的依赖项。现在,在您发表评论后,我将该依赖项更改为 2.10 并且它正在工作。非常感谢您的帮助。
标签: scala apache-spark hortonworks-data-platform spark-streaming