Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark Structured Streaming v2.4.0-检查点目录永远增长:*.tmp.crc文件永远不会被删除_Apache Spark - Fatal编程技术网

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
这里介绍了一种解决方法: