我正在使用结构化流从文件源中提取数据。我有一个检查点设置,据我所知,它可以正常工作,但我不明白在几种情况下会发生什么。如果我的流媒体应用程序运行很长时间,检查点文件会永远继续变大还是最终会被清除。如果它永远不会被清理干净,这有关系吗?似乎最终它会变得足够大,以至于程序解析需要很长时间。

我的另一个问题是,当我手动删除或更改检查点文件夹,或更改为不同的检查点文件夹时,没有摄取新文件。这些文件被识别并添加到检查点,但实际上并未摄取该文件。这让我担心,如果检查点文件夹以某种方式被更改,我的摄取会出错。在这些情况下,我无法找到有关正确程序的太多信息。

最佳答案



Structured Streaming 保留一个后台线程,负责删除状态的快照和增量,因此您不必担心它,除非您的状态非常大并且您拥有的空间量很小,在这种情况下,您可以配置重新训练的增量/快照 Spark 存储。



我不太确定你在这里的意思,但你应该只在特殊情况下删除检查点数据。只要存储的数据类型向后兼容,结构化流就允许您在版本升级之间保持状态。我真的看不出有什么好的理由改变检查点的位置或手动删除文件,除非发生了不好的事情。

关于apache-spark - Spark 结构化流检查点清理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48235955/

10-13 07:23