检查点文件不删除当使用显示()

学习如何阻止显示(streamingDF)检查点文件使用了大量的存储空间。

写的亚当Pavlacka

去年发表在:2022年5月19日

问题

你有一个流的工作使用显示()显示DataFrames。

% scala val streamingDF = spark.readStream.schema(模式).parquet (< input_path >)显示(streamingDF)

检查点文件被创建,但并没有被删除。

您可以验证问题,方法是导航到根目录并查看/ local_disk0 / tmp /文件夹中。检查点文件保留在文件夹中。

导致

命令显示器(streamingDF)是一个可以显示的内存水槽实现的数据流为每个micro-batch DataFrame。目录是一个检查点跟踪流所需的更新。

如果你没有指定一个自定义的检查点位置,默认的检查点在创建目录/ local_disk0 / tmp /

砖使用检查点目录来确保正确的和一致的进展信息。关闭流时,故意或偶然,检查点目录允许砖重启和接究竟在什么地方。

如果流被取消关闭流从笔记本,砖的工作试图清理力所能及的检查点目录。如果流以其他方式终止,或者终止工作,检查点目录没有清理干净。

这是设计。

解决方案

你可以防止不必要的检查点文件下面的指导方针。

  • 不应该使用显示器(streamingDF)在生产工作。
  • 如果显示器(streamingDF)是强制性的用例,您应该手动指定检查点目录使用Apache火花配置选项spark.sql.streaming.checkpointLocation
  • 如果您手动指定检查点目录,你应该定期删除任何剩余的文件在这个目录中。这可以每周完成。
这篇文章有用吗?