【发布时间】:2019-07-13 11:36:41
【问题描述】:
我的 Spark 作业引发如下异常:
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, localhost, executor driver): java.lang.AssertionError: assertion failed: Got wrong record for spark-executor-test-local-npp_consumer_grp_3 <topic> 0 even after seeking to offset 29599
at scala.Predef$.assert(Predef.scala:170)
我已禁用 auto.commit (enable.auto.commit=false) 并使用 Kafka API 提交偏移量
((CanCommitOffsets) messages.inputDStream()).commitAsync(offsetRanges.get());`).
出现这种错误的原因可能是什么?
出现此错误是由于 Kafka 消费者端的问题还是由于我的 spark-kafka 消费者程序?*
查看CachedKafkaConsumer source code 后,我认为这应该是由于连续的缓冲区未命中(我的缓冲区大小是默认大小 - 65536 - receive.buffer.bytes = 65536)但我没有看到缓冲区未命中消息 - Buffer miss for $groupId $topic $partition $offset在我的日志中。
所以,我想知道这是否是由于缓冲区大小的原因?
我尝试将receive.buffer.bytes 增加到655360 但我的spark-kafka 消费者失败并出现同样的错误。
这个错误可能是由于我的 Kafka 源由于大量数据而发送的吗
【问题讨论】:
标签: apache-spark spark-streaming kafka-consumer-api