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 配置 | SparkSession 配置 |
---|---|
delta.<conf> |
spark.databricks.delta.properties.defaults.<conf> |
例如,要为会话中创建的所有新 Delta Lake 表设置 delta.appendOnly = true
属性,请执行以下设置:
SET spark.databricks.delta.properties.defaults.appendOnly = true
要修改现有表的表属性,请使用 SET TBLPROPERTIES。
Delta 表属性
可用的 Delta 表属性包括以下项:
财产 |
---|
delta.appendOnly true ,用于将此 Delta 表设为仅追加。 如果仅追加,将无法删除现有记录,并且无法更新现有值。请参阅 Delta 表属性参考。 数据类型: Boolean 默认: false |
delta.autoOptimize.autoCompact auto ,可让 Delta Lake 自动优化此 Delta 表的文件布局。请参阅 Azure Databricks 上的 Delta Lake 的自动压缩。 数据类型: Boolean 默认值:(无) |
delta.autoOptimize.optimizeWrite true ,用于使 Delta Lake 在写入期间自动优化此 Delta 表的文件布局。请参阅 Azure Databricks 上 Delta Lake 的优化写入。 数据类型: Boolean 默认值:(无) |
delta.checkpoint.writeStatsAsJson true ,用于让 Delta Lake 在检查点中为 stats 列写入 JSON 格式的文件统计信息。请参阅在检查点中管理列级统计信息。 数据类型: Boolean 默认: true |
delta.checkpoint.writeStatsAsStruct true ,用于让 Delta Lake 在检查点中为 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 在物理性删除逻辑上已删除的数据文件之前,保留这些文件的最短时长。 这是为了防止压缩或分区覆盖后旧读取器中出现故障。 此值应足够大,以确保:
请参阅为“按时间顺序查看”查询配置数据保留。 数据类型: 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 默认值:(无) |