管理 Delta 表的大小

增量表不同于传统表。 增量表包括 ACID 事务和按时间顺序查看的功能,这意味着,它们会保留事务日志和过时的数据文件。 这些附加功能需要占用存储空间。

本文提供可帮助你管理增量表大小的建议。

启用文件系统版本控制

启用文件系统版本控制时,可将数据的多个变体保留在同一个存储桶中。 文件系统创建数据的版本而不是删除项,因而增加了可供增量表使用的存储空间。

启用 Bloom 筛选器

Bloom 筛选器索引是一种节省空间的数据结构,可跳过选定列中的数据(特别对于包含任意文本的字段)。 Databricks 支持文件级 Bloom 筛选器;每个数据文件都可关联一个 Bloom 筛选器索引文件。 读取文件前,Databricks 会检查索引文件,并且仅在索引指示该文件可能与数据筛选器匹配时才会读取该文件。

Bloom 筛选器的大小取决于为其创建了 Bloom 筛选器的集中的数字元素,以及所需的假正概率 (FPP)。 FPP 越低,每个元素使用的位数越多,它的准确度就越高,但代价是存储空间占用更多。

查看增量 logRetentionDuration 策略

日志文件默认保留 30 天。 可通过 delta.logRetentionDuration 属性配置此值。 可以使用 ALTER TABLE SET TBLPROPERTIES SQL 方法设置此属性的值。 保留的天数越多,占用的存储空间越多。 例如,如果设置 delta.logRetentionDuration = '365 days',则会将日志文件保留 365 天而不是默认的 30 天。

VACUUM 增量表

VACUUM 删除不再处于表事务日志最新状态且超过保留期阈值的数据文件。 根据从 Delta 的事务日志中以逻辑方式删除文件的时间和保留时间(而不是其在存储系统上的修改时间戳)删除这些文件。 默认阈值为 7 天。 Databricks 不会对增量表自动触发 VACUUM 操作。 必须手动运行此命令。 VACUUM 可帮助你删除不再需要的已过时文件。

OPTIMIZE 增量表

OPTIMIZE 命令将多个增量文件压缩成较大的单个文件。 这有助于避免使用过多的小文件,从而提高增量表的总体查询速度和性能。 OPTIMIZE 默认创建 1GB 的文件。