1

我正在尝试提交一个火花流 + kafka 作业,它只是从 kafka 主题中读取字符串行。但是,我收到以下异常

15/07/24 22:39:45 ERROR TaskSetManager: 阶段 2.0 中的任务 0 失败 4 次;线程“Thread-49”org.apache.spark.SparkException 中的中止作业异常:作业因阶段失败而中止:阶段 2.0 中的任务 0 失败 4 次,最近一次失败:阶段 2.0 中丢失任务 0.3(TID 73、10.11。 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()

更新此异常似乎仅在我提交作业时发生。如果我使用 spark shell 通过粘贴代码来运行作业,它可以正常工作

4

1 回答 1

1

我的自定义解码器遇到了同样的问题。我添加了以下构造函数,它解决了这个问题。

public YourDecoder(VerifiableProperties verifiableProperties)
{

}
于 2015-08-05T12:22:21.973 回答