Spark 结构化流检查点清理
Spark Structured Streaming Checkpoint Cleanup
我正在使用结构化流从文件源提取数据。我有一个检查点设置,据我所知它可以正常工作,但我不明白在某些情况下会发生什么。如果我的流媒体应用运行了很长时间,检查点文件会永远变大,还是最终会被清理掉。如果它从未被清理过,这有关系吗?似乎最终它会变得足够大,以至于程序需要很长时间才能解析。
我的另一个问题是,当我手动删除或更改检查点文件夹,或更改为不同的检查点文件夹时,没有摄取新文件。文件被识别并添加到检查点,但实际上并未摄取文件。这让我担心,如果检查点文件夹以某种方式被更改,我的摄取就会搞砸。我找不到太多关于在这些情况下正确的程序是什么的信息。
If my streaming app runs for a long time will the checkpoint files
just continue to become larger forever or is it eventually cleaned up
Structured Streaming 保留一个后台线程,负责删除状态的快照和增量,因此您不必担心它,除非您的状态非常大并且 space 的数量是小,在这种情况下,您可以配置重新训练的 deltas/snapshots Spark 存储。
when I manually remove or alter the checkpoint folder, or change to a
different checkpoint folder no new files are ingested.
我不太确定你在这里的意思,但你应该只在特殊情况下删除检查点数据。只要存储的数据类型向后兼容,结构化流允许您在版本升级之间保持状态。除非发生不好的事情,否则我真的没有看到更改检查点位置或手动删除文件的充分理由。
在 运行 我的 Structured Streaming 应用程序使用 6 个月后,我认为我找到了一些答案。检查点文件每执行 10 次就会压缩一次,并且会继续增长。一旦这些压缩文件变大~2gb,处理时间就会明显减少。因此,每 10 次执行大约有 3-5 分钟的延迟。我清理了检查点文件因此重新开始,执行时间立即恢复正常。
对于第二个问题,我发现基本上有两个检查点位置。指定的检查点文件夹和 table 目录中的另一个 _spark_metadata。两者都需要删除才能重新开始检查点。
我正在使用结构化流从文件源提取数据。我有一个检查点设置,据我所知它可以正常工作,但我不明白在某些情况下会发生什么。如果我的流媒体应用运行了很长时间,检查点文件会永远变大,还是最终会被清理掉。如果它从未被清理过,这有关系吗?似乎最终它会变得足够大,以至于程序需要很长时间才能解析。
我的另一个问题是,当我手动删除或更改检查点文件夹,或更改为不同的检查点文件夹时,没有摄取新文件。文件被识别并添加到检查点,但实际上并未摄取文件。这让我担心,如果检查点文件夹以某种方式被更改,我的摄取就会搞砸。我找不到太多关于在这些情况下正确的程序是什么的信息。
If my streaming app runs for a long time will the checkpoint files just continue to become larger forever or is it eventually cleaned up
Structured Streaming 保留一个后台线程,负责删除状态的快照和增量,因此您不必担心它,除非您的状态非常大并且 space 的数量是小,在这种情况下,您可以配置重新训练的 deltas/snapshots Spark 存储。
when I manually remove or alter the checkpoint folder, or change to a different checkpoint folder no new files are ingested.
我不太确定你在这里的意思,但你应该只在特殊情况下删除检查点数据。只要存储的数据类型向后兼容,结构化流允许您在版本升级之间保持状态。除非发生不好的事情,否则我真的没有看到更改检查点位置或手动删除文件的充分理由。
在 运行 我的 Structured Streaming 应用程序使用 6 个月后,我认为我找到了一些答案。检查点文件每执行 10 次就会压缩一次,并且会继续增长。一旦这些压缩文件变大~2gb,处理时间就会明显减少。因此,每 10 次执行大约有 3-5 分钟的延迟。我清理了检查点文件因此重新开始,执行时间立即恢复正常。
对于第二个问题,我发现基本上有两个检查点位置。指定的检查点文件夹和 table 目录中的另一个 _spark_metadata。两者都需要删除才能重新开始检查点。