gal*_*esh 4 apache-kafka pyspark spark-structured-streaming spark-streaming-kafka
我正在本地模式下使用 Spark 集群运行 PySpark,并尝试将流式 DataFrame 写入 Kafka 主题。
当我运行查询时,我收到以下消息:
java.lang.IllegalStateException: Set(topicname-0) are gone. Some data may have been missed..
Some data may have been lost because they are not available in Kafka any more; either the
data was aged out by Kafka or the topic may have been deleted before all the data in the
topic was processed. If you don't want your streaming query to fail on such cases, set the
source option "failOnDataLoss" to "false".
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
java.lang.IllegalStateException: Set(topicname-0) are gone. Some data may have been missed..
Some data may have been lost because they are not available in Kafka any more; either the
data was aged out by Kafka or the topic may have been deleted before all the data in the
topic was processed. If you don't want your streaming query to fail on such cases, set the
source option "failOnDataLoss" to "false".
Run Code Online (Sandbox Code Playgroud)
mik*_*ike 10
自上次运行查询以来,当某些消息/偏移量从源主题中删除时,通常会显示此错误消息。删除是由于清理政策(例如保留时间)而发生的。
假设您的主题具有偏移量为 0、1、2 的消息,这些消息均已由应用程序处理。检查点文件存储最后一个偏移量 2,以记住下次启动时继续使用偏移量 3。
一段时间后,偏移量为 3、4、5 的消息生成到主题,但偏移量为 0、1、2、3 的消息由于保留而从主题中删除。
现在,当重新启动 Spark 结构化流作业时,它会尝试根据其检查点文件获取 3,但意识到只有偏移量为 4 的消息可用。在这种情况下它会抛出这个异常。
你可以通过以下方式解决这个问题
.option("failOnDataLoss", "false")您的操作中的设置readStream,或者根据结构化流+ Kafka 集成指南,该选项failOnDataLoss描述为:
“当数据可能丢失(例如,主题被删除,或者偏移量超出范围)时是否使查询失败。这可能是一个误报。当它没有按预期工作时,您可以禁用它。批处理如果由于数据丢失而无法从提供的偏移量中读取任何数据,则查询将始终失败。”
| 归档时间: |
|
| 查看次数: |
8216 次 |
| 最近记录: |