我是新手来激发流媒体。
当我像普通的scala应用程序一样运行spark流功能时,它按预期工作。
我能够捕获我的kafka事件并能够存储在hdfs中。
当我尝试使用spark-submit命令作为流媒体jar运行时,我收到了轰鸣声错误。
spark-submit --class Test --master yarn --executor-memory 20G --num-executors 50 spark-kafka-streaming-0.0.1-SNAPSHOT-jar-with-dependencies.jar
16/02/16 08:39:23 INFO scheduler.JobGenerator: Started JobGenerator at 1455640800000 ms
16/02/16 08:39:23 INFO scheduler.JobScheduler:已开始JobScheduler 16/02/16 08:40:00 INFO utils.VerifiableProperties:验证属性
16/02/16 08:40:00 INFO utils.VerifiableProperties: Property group.id is overridden to
16/02/16 08:40:00 INFO utils.VerifiableProperties: Property zookeeper.connect is overridden to
16/02/16 08:40:00 ERROR actor.ActorSystemImpl: Uncaught fatal error from thread [sparkDriver-akka.actor.default-dispatcher-2] shutting down ActorSystem [sparkDriver]
java.lang.NoSuchMethodError: org.apache.spark.streaming.kafka.DirectKafkaInputDStream.id()I
ache.spark.streaming.kafka.DirectKafkaInputDStream.compute(DirectKafkaInputDStream.scala:165)at org.ap
at ache.spark.streaming.kafka.DirectKafkaInputDStream.compute(DirectKafkaInputDStream.scala:165)at org.ap at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:300)
at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1$$anonfun$1.apply(DStream.scala:300)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:299)
at org.apache.spark.streaming.dstream.DStream$$anonfun$getOrCompute$1.apply(DStream.scala:287)
请帮我解决这个问题。
提前致谢。
答案 0 :(得分:2)
InputDStream.id
被添加到Spark Streaming中。因此,使用Spark 1.4+可能生成spark-kafka-streaming-0.0.1-SNAPSHOT-jar-with-dependencies.jar
,而spark-submit
的Spark版本低于1.4。
通常,您应该始终使用相同的版本进行编译和运行。
第一步是使用bin/spark-submit --version
检查您的spark-submit版本。然后检查maven pom.xml(或sbt构建文件)中Spark jar的版本,看看它们是否相同。如果没有,请更新其中一个并确保它们相同。要更新spark-submit
,您可能需要从http://spark.apache.org/downloads.html