Kafka トピックから文字列の行を読み取るだけの Spark Streaming + Kafka ジョブを送信しようとしています。ただし、次の例外が発生しています
15/07/24 22:39:45 エラー TaskSetManager: ステージ 2.0 のタスク 0 が 4 回失敗しました。スレッド「Thread-49」でジョブ例外を中止します。 112.93): java.lang.NoSuchMethodException: kafka.serializer.StringDecoder.(kafka.utils.VerifiableProperties) java.lang.Class.getConstructor0(Class.java:2892) java.lang.Class.getConstructor(Class.java:1723) org.apache.spark.streaming.kafka.KafkaReceiver.onStart(KafkaInputDStream.scala:106) org.apache.spark.streaming.receiver.ReceiverSupervisor.startReceiver(ReceiverSupervisor.scala:121) org.apache.spark.streaming.receiver. ReceiverSupervisor.start(ReceiverSupervisor.scala:106) org.apache.spark.
DSE で使用される spark jar ファイルを確認したところ、そのコンストラクターを持つ kafka_2.10-0.8.0.jar を使用していることがわかります。エラーの原因がわかりません。ここに私の消費者コードがあります
val sc = new SparkContext(sparkConf)
val streamingContext = new StreamingContext(sc, SLIDE_INTERVAL)
val topicMap = kafkaTopics.split(",").map((_, numThreads.toInt)).toMap
val accessLogsStream = KafkaUtils.createStream(streamingContext, zooKeeper, "AccessLogsKafkaAnalyzer", topicMap)
val accessLogs = accessLogsStream.map(_._2).map(log => ApacheAccessLog.parseLogLine(log).cache()
更新この例外は、ジョブを送信したときにのみ発生するようです。コードを貼り付けてスパークシェルを使用してジョブを実行すると、正常に動作します