我正在尝试在 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 的错误文本 -
线程“Driver”scala.MatchError 中出现异常:
java.lang.NoSuchMethodError:
scala.Predef$.$conforms()Lscala/Predef$$less$冒号$less; (类的
java.lang.NoSuchMethodError)位于
org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:432)
12/02/15 15:07:23 INFO 纱线.ApplicationMaster:等待火花
上下文初始化 ... 1 15/02/12 15:07:33 信息
yarn.ApplicationMaster:等待spark上下文初始化...2
作业在 YARN 中被接受,但它永远不会进入 RUNNING 状态。
我认为这是由于 Scala 版本差异造成的。我尝试更改 POM 配置,但仍然无法修复错误。
提前谢谢你的帮助。
之前我指定了 Spark-streaming_2.10 的依赖项(使用 Scala 2.10 编译的 Spark)。我没有指定 Scala 编译器本身的依赖关系。 Maven 似乎自动拉取了 2.11(可能是由于其他一些依赖项)。当尝试调试这个问题时,我添加了对 Scala 编译器 2.11 的依赖。现在,在 Paul 发表评论后,我将 Scala 依赖项版本更改为 2.10,并且它正在运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)