有状态 Spark Streaming 的 SST 文件数量无限增长

问题描述 投票:0回答:1

我们正在 Databricks 上运行一个非常简单的 Apache Spark Streaming 应用程序。它使用来自 Apache Kafka 的消息,基于 1 小时水印进行重复数据删除,并将输出写入 JSON 文件。

之前,我们使用 HDFS 支持的状态存储提供程序在 S3 上存储重复数据删除状态。检查点存储的大小或多或少是稳定的。但使用这个解决方案时,我们会遇到这个问题,在一段时间后,作业偶尔会因 OOM 而失败。我们决定切换到 RocksDB 状态存储提供商。

看起来 OOM 问题已经消失,但我们注意到我们的状态存储位置当前包含约 160 万个文件,总大小约 5 GB,并且文件数量不断增长。调查过程中发现大部分文件都是SST文件。这让我们担心,因为如果需要从某个特定点重新启动流式传输,例如为了恢复故障,我们必须在启动应用程序之前花费大量时间从 S3 中删除大量小文件。

Spark Streaming 应用程序是否需要无限增长的 SST 文件数量?有什么方法可以压缩或清理它们吗?

apache-spark databricks spark-structured-streaming
1个回答
0
投票

状态文件应该被清理。我相信保存了 100 个微批次的状态文件。仔细检查计算资源是否能够删除检查点目录中的文件。

© www.soinside.com 2019 - 2024. All rights reserved.