“ OffsetOutOfRangeException:在没有配置分区重置策略的情况下偏移超出范围”是什么意思?

问题描述 投票:1回答:1

我使用Apache Spark 2.4.1和kafka data source

我有以下流查询:

Dataset<Row> df = sparkSession
                      .readStream()
                      .format("kafka")
                      .option("kafka.bootstrap.servers", SERVERS)
                      .option("subscribe", TOPIC) 
                      .option("startingOffsets", "latest")
                      .option("auto.offset.reset", "earliest") 
                      .load();

启动流式查询时,会显示以下警告:

2019-12-10 08:20:38,926 [任务639的执行器任务启动工作者]警告org.apache.spark.sql.kafka010.InternalKafkaConsumer-一些数据可能会丢失。从最早的偏移中恢复:470021 2019-12-1008:20:38,926 [执行任务639的执行器任务启动程序]警告org.apache.spark.sql.kafka010.InternalKafkaConsumer-当前可用的偏移范围是AvailableOffsetRange(470021,470021)。偏移量62687超出范围,[62687,62727)中的记录将被跳过(GroupId:spark-kafka-source-1fba9e33-165f-42b4-a220-6697072f7172-1781964857-执行者,TopicPartition:INBOUND-19)。一些数据可能已经丢失,因为它们在Kafka中不再可用;要么数据老化了Kafka或主题可能已被删除,主题已处理。如果您想让流式查询失败情况下,将源选项“ failOnDataLoss”设置为“ true”。

我也将auto.offset.reset用作latest,将startingOffsets用作latest

2019-12-11 08:33:37,496 [任务1059的执行器任务启动工作器]警告org.apache.spark.sql.kafka010.KafkaDataConsumer-KafkaConsumer缓存达到最大容量64,删除了CacheKey(spark-kafka的使用者) -source-93ee3689-79f9-42e8-b1ee-e856570205ae-1923743483-executor,_INBOUND-19)

这在告诉我什么?如何消除警告(如果可能)?

apache-spark apache-kafka apache-spark-sql spark-structured-streaming
1个回答
0
投票

某些数据可能会丢失。从最早的偏移中恢复:470021

以上警告发生在流式查询以检查点偏移量开始,而该偏移量超出了主题中当前可用的偏移量时。

换句话说,流查询使用checkpointLocation的状态不再是当前状态,因此不再显示警告(不是错误)。>>

这意味着您的查询与cleanup.policy(保留或compaction)相比太慢了。

© www.soinside.com 2019 - 2024. All rights reserved.