Delta 表属性参考
Delta Lake 保留以 delta.
开头的 Delta 表属性。 这些属性可能具有特定含义,并在设置这些属性时影响行为。
注意
所有设置或更新表属性的操作都将与其他并发写入操作冲突,从而导致这些操作失败。 Databricks 建议只有在不存在对表的并发写入操作时才修改表属性。
表属性和 SparkSession 属性如何交互?
Delta 表属性按表设置。 如果在表上设置了某个属性,则这是默认遵循的设置。
某些表属性具有关联的 SparkSession 配置,这些配置始终优先于表属性。 一些示例包括 spark.databricks.delta.autoCompact.enabled
和 spark.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 必须将某事务与并发事务所作修改进行隔离的程度。 有效值为 Serializable 和 WriteSerializable 。请参阅 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 默认值:(无) |