Delta 表属性参考

Delta Lake 保留以 delta. 开头的 Delta 表属性。 这些属性可能具有特定含义,并在设置这些属性时影响行为。

注意

所有设置或更新表属性的操作都将与其他并发写入操作冲突,从而导致这些操作失败。 Databricks 建议只有在不存在对表的并发写入操作时才修改表属性。

表属性和 SparkSession 属性如何交互?

Delta 表属性按表设置。 如果在表上设置了某个属性,则这是默认遵循的设置。

某些表属性具有关联的 SparkSession 配置,这些配置始终优先于表属性。 一些示例包括 spark.databricks.delta.autoCompact.enabledspark.databricks.delta.optimizeWrite.enabled 配置,这些配置在 SparkSession 级别而不是表级别启用自动压缩和优化写入。 Databricks 建议对大多数工作负荷使用表范围的配置。

对于每个 Delta 表属性,可以使用 SparkSession 配置为新表设置默认值,替代内置默认值。 此设置仅影响新表,不会替代或替换现有表上设置的属性。 SparkSession 中使用的前缀不同于表属性中使用的配置,如下表所示:

Delta Lake conf SparkSession conf
delta.<conf> spark.databricks.delta.properties.defaults.<conf>

例如,要设置 delta.appendOnly = true 会话中创建的所有新 Delta Lake 表的属性,请设置以下内容:

SET spark.databricks.delta.properties.defaults.appendOnly = true

要修改现有表的表属性,请使用 SET TBLPROPERTIES

Delta 表属性

可用的 Delta 表属性包括以下项:

属性
delta.appendOnly

true,表示仅追加此 Delta 表。 如果仅追加,将无法删除现有记录,并且无法更新现有值。

请参阅 Delta 表属性参考

数据类型:Boolean

默认:false
delta.autoOptimize.autoCompact

auto,表示 Delta 表可自动优化此 Delta 表的文件布局。

请参阅 Azure Databricks 上的 Delta Lake 的自动压缩

数据类型:Boolean

默认值:(无)
delta.autoOptimize.optimizeWrite

true,表示 Delta Lake 可在写入期间自动优化此 Delta 表的文件布局。

请参阅 Azure Databricks 上的 Delta Lake 的优化写入

数据类型:Boolean

默认值:(无)
delta.checkpoint.writeStatsAsJson

true,表示 Delta 表可针对 stats 列使用 JSON 格式在检查点中写入文件统计信息。

请参阅在检查点中管理列级统计信息

数据类型:Boolean

默认:true
delta.checkpoint.writeStatsAsStruct

true,表示 Delta 表可针对 stats_parsed 列将文件统计信息以结构格式写入检查点,并针对 partitionValues_parsed 将分区值作为结构写入。

请参阅在检查点中管理列级统计信息

数据类型:Boolean

默认值:(无)
delta.checkpointPolicy

classic 用于经典 Delta Lake 检查点。 v2 用于 v2 检查点。

请参阅表与液态群集的兼容性

数据类型:String

默认:classic
delta.columnMapping.mode

是否为 Delta 表列和使用不同名称的相应 Parquet 列启用列映射。

请参阅使用 Delta Lake 列映射重命名和删除列

注意:启用 delta.columnMapping.mode 会自动启用
delta.randomizeFilePrefixes

数据类型:DeltaColumnMappingMode

默认:none
delta.dataSkippingNumIndexedCols

Delta Lake 收集有关跳过数据的统计信息的列数。 用于收集所有列的统计信息的值 -1

请参阅 Delta Lake 的数据跳过

数据类型:Int

默认:32
delta.dataSkippingStatsColumns

Delta Lake 对其收集统计信息以增强数据跳过功能的列名称的逗号分隔列表。 此属性优先于 delta.dataSkippingNumIndexedCols

请参阅 Delta Lake 的数据跳过

数据类型:String

默认值:(无)
delta.deletedFileRetentionDuration

Delta Lake 在数据文件被物理删除之前保留逻辑删除数据文件的最短持续时间。 这是为了防止压缩或分区覆盖后陈旧读取器中出现故障。

此值应足够大,以确保:

- 如果在有并发的读取器或写入器访问 Delta 表时运行 VACUUM,则该值大于作业可能的最长持续时间。
- 如果运行从表中读取的流式处理查询,该查询停止的时间不会超过此值。 否则,查询可能无法重启,因为它仍必须读取旧文件。

请参阅为“按时间顺序查看”查询配置数据保留

数据类型:CalendarInterval

默认:interval 1 week
delta.enableChangeDataFeed

true,表示启用更改数据馈送。

请参阅启用更改数据馈送

数据类型:Boolean

默认:false
delta.isolationLevel

必须将某事务与并发事务所作修改进行隔离的程度。

有效值为 SerializableWriteSerializable

请参阅 Azure Databricks 上的隔离级别和写入冲突

数据类型:String

默认:WriteSerializable
delta.logRetentionDuration

Delta 表历史记录的保留时间长度。 VACUUM 操作会替代此保留期阈值。

每次写入检查点时,Delta Lake 都会自动清除早于保留间隔的日志条目。 如果将此属性设置为足够大的值,则会保留许多日志条目。 这应当不会影响性能,因为针对日志的操作时间恒定。 针对历史记录的操作是并行的,但会随着日志大小的增加而变得更为昂贵。

请参阅为“按时间顺序查看”查询配置数据保留

数据类型:CalendarInterval

默认:interval 30 days
delta.minReaderVersion

允许从此 Delta 表读取的读取器的最低所需协议读取器版本。

Databricks 不建议手动配置此属性。

请参阅 Azure Databricks 如何管理 Delta Lake 功能兼容性?

数据类型:Int

默认:1
delta.minWriterVersion

允许写入此 Delta 表的写入器的最低所需协议写入器版本。

Databricks 不建议手动配置此属性。

请参阅 Azure Databricks 如何管理 Delta Lake 功能兼容性?

数据类型:Int

默认:2
delta.randomizeFilePrefixes

true,表示 Delta Lake 可为文件路径而不是分区信息生成随机前缀。

数据类型:Boolean

默认:false
delta.randomPrefixLength

如果 delta.randomizeFilePrefixes 设置为 true,则为 Delta Lake 为随机前缀生成的字符数。

数据类型:Int

默认:2
delta.setTransactionRetentionDuration

新快照将保留事务标识符(例如 SetTransaction)的最短持续时间。 当新快照看到事务标识符早于或等于此属性指定的持续时间时,快照会将其视为已过期并忽略该标识符。 创建写入幂等时,将使用 SetTransaction 标识符。 有关详细信息,请参阅 foreachBatch 中的幂等表写入

数据类型:CalendarInterval

默认值:(无)
delta.targetFileSize

用于优化文件的目标文件大小(字节或更大的单位)。 例如,
104857600(字节)或 100mb

请参阅配置 Delta Lake 以控制数据文件大小

数据类型:String

默认值:(无)
delta.tuneFileSizesForRewrites

true,表示针对 Delta 表的所有数据布局优化操作将始终使用较小的文件大小。

false,表示永远不会调整为较小的文件大小,也就是说,会阻止激活自动检测功能。

请参阅配置 Delta Lake 以控制数据文件大小

数据类型:Boolean

默认值:(无)