Apache spark Spark Structured Streaming v2.4.0-检查点目录永远增长:*.tmp.crc文件永远不会被删除
我运行Apache spark Spark Structured Streaming v2.4.0-检查点目录永远增长:*.tmp.crc文件永远不会被删除,apache-spark,Apache Spark,我运行Spark(2.4)structured streaming作业,该作业读取Kafka主题,并使用带水印的窗口将聚合数据写回不同的主题。在这种配置中,Spark需要检查点目录。问题是,由于*,检查点目录的大小永远在增长。crc.tmp文件永远不会被删除。这些文件存在于提交、偏移和状态子目录中。 我使用选项spark.sql.streaming.minBatchesToRetain来限制将保留多少历史记录,但隐藏的临时crc文件似乎永远保留在文件系统中 例如,让我们看看提交子目录中的常规文件
Spark(2.4)
structured streaming作业,该作业读取Kafka主题
,并使用带水印的窗口将聚合数据写回不同的主题。在这种配置中,Spark需要检查点目录。问题是,由于*,检查点目录的大小永远在增长。crc.tmp
文件永远不会被删除。这些文件存在于提交、偏移和状态子目录中。
我使用选项spark.sql.streaming.minBatchesToRetain
来限制将保留多少历史记录,但隐藏的临时crc
文件似乎永远保留在文件系统中
例如,让我们看看提交子目录中的常规文件:
ls checkpoint/commits/
6605 6606 6607 6608 6609 6610 6611 6612 6613 6614
现在,让我们包括隐藏文件
$ls -a checkpoint/commits/ | head
.
..
..0.085caf0c-c924-411c-8907-5b1c3856de9d.tmp.crc
..1000.6c40ff1c-2ad5-4c88-a04b-1545089904db.tmp.crc
..1001.abebcebd-2cb9-49e7-a058-79735b8f1b9d.tmp.crc
..100.1c0f0619-63a5-46e4-9122-0f2ef6317d3b.tmp.crc
..1002.880fcde1-3982-4886-aa5b-c62b7542b27f.tmp.crc
..1003.68f41a4c-096e-4449-949f-9adeb5a78673.tmp.crc
..1004.57558c08-05fe-49e0-9b0e-96d278aed5eb.tmp.crc
..1005.5f653083-7e4d-4931-9cd3-c53aa0c0d524.tmp.crc
$ls -a checkpoint/commits/ | grep -c .tmp.crc
6657
在仅仅几个小时的操作之后,我在提交子目录中只有6000多个文件,而在完整的检查点目录中,我有大约100K个文件。这项工作进行了几个小时
这是火花里的虫子吗?有人知道如何告诉Spark自动删除旧的
*.tmp.crc
文件吗?问题似乎与kafka
源或接收器无关,我设法用最小的配置读取/写入csv文件来重现问题:SparkSession.builder().master(“本地[1]”。appName(“测试”).getOrCreate().readStream().schema(new StructType().add(“line”,DataTypes.StringType)).format(“csv”).load(“WORK/in”).writeStream().format(“csv”).option(“path”,“WORK/out”).option(“checkpoint location”,“checkpoint”).start()代码>在检查点/提交中,我仍然有一些文件,如.0.43bb9f22-1278-44e8-b19b-3d7ec457e344.tmp.crc
这里介绍了一种解决方法: