我试图在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中出现异常。匹配错误:java.lang.NoSuchMethodError:scala。预定义$$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纱线。ApplicationMaster:等待火花上下文初始化。。。1 2012年2月15日15:07:33信息纱线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,它正在运行。