问题
你有一个流的工作使用显示()显示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。
- 如果您手动指定检查点目录,你应该定期删除任何剩余的文件在这个目录中。这可以每周完成。