gpt4 book ai didi

apache-spark - 以 Kafka 作为源重新启动流式查询时的数据丢失情况

转载 作者:行者123 更新时间:2023-12-05 07:22:12 25 4
gpt4 key购买 nike

在“Spark Streaming with Apache Spark”一书中,作者提到在使用 Kafka 作为源进行测试时,应将字段“failOnDataLoss(默认值:true)”设置为 false。他们说,

This flag indicates whether to fail the restart of a streaming query in case data might be lost. This is usually when offsets are out of range, topics are deleted, or topics are rebalanced. We recommend setting this option to false during the develop/test cycle because stop/restart of the query side with a continuous producer will often trigger a failure. Set this back to true for production deployment.

我想了解为什么停止/重新启动查询会失败。偏移量如何超出范围? Spark 不会维护哪些偏移量以作为检查点读取?

最佳答案

我同意“因为停止/重新启动具有连续生产者的查询端经常会触发失败”的原因并没有真正意义。如您所说,Spark 会维护当前的偏移量。此外,在拥有连续生产者的同时停止/重新启动查询正是我们在生产系统上的目标。

因此,我只能猜测那句话的意思,我最好的猜测是有一个错字,它应该写成“without a continuous producer”。

您通常没有开发环境的持续生产者,为了节省一些磁盘空间,您的开发环境主题通常有较短的保留期。

在开发阶段,您手动为输入主题生成一些消息,并运行 Spark Structured Streaming 作业以查看其行为是否符合预期。假设您已生成偏移量为 0 到 10 的消息。然后,您团队中的某个人想要测试该主题的另一个消费者并生成偏移量为 11 到 20 的消息。一段时间后,在下一个开发阶段(假设是 3 周稍后)您想要测试另一个功能,您将再次为其手动生成一些消息。但是,您的 Kafka 主题的清理策略已经删除了所有旧偏移量 0 到 20,并且在重新启动流式查询时它会尝试读取不再存在的偏移量 11。

另一种常见的情况是,当您从主题中删除有关开发环境的所有数据以便能够“从头开始”时。

这些场景经常出现在开发环境中,因此建议将选项 failOnDataLoss 设置为 false

关于apache-spark - 以 Kafka 作为源重新启动流式查询时的数据丢失情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com