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.appendOnlytrue,用于将此 Delta 表设为仅追加。 如果仅追加,将无法删除现有记录,并且无法更新现有值。请参阅 Delta 表属性参考。 数据类型: Boolean默认: false | 
| delta.autoOptimize.autoCompactauto,可让 Delta Lake 自动优化此 Delta 表的文件布局。请参阅 Azure Databricks 上的 Delta Lake 的自动压缩。 数据类型: Boolean默认值:(无) | 
| delta.autoOptimize.optimizeWritetrue,用于使 Delta Lake 在写入期间自动优化此 Delta 表的文件布局。请参阅 Azure Databricks 上 Delta Lake 的优化写入。 数据类型: Boolean默认值:(无) | 
| delta.checkpoint.writeStatsAsJsontrue,用于让 Delta Lake 在检查点中为stats列写入 JSON 格式的文件统计信息。数据类型: Boolean默认: true | 
| delta.checkpoint.writeStatsAsStructtrue,用于让 Delta Lake 在检查点中为stats_parsed列写入结构体格式的文件统计信息,并写入分区值作为partitionValues_parsed的结构体。数据类型: Boolean默认: true | 
| delta.checkpointPolicyclassic,用于经典 Delta Lake 检查点。v2,用于 v2 检查点。请参阅表与液态群集的兼容性。 数据类型: String默认: classic | 
| delta.columnMapping.mode是否为 Delta 表列和使用不同名称的相应 Parquet 列启用列映射。 请参阅使用 Delta Lake 列映射重命名和删除列。 注意:启用 delta.columnMapping.mode会自动启用delta.randomizeFilePrefixes。数据类型: DeltaColumnMappingMode默认: none | 
| delta.dataSkippingNumIndexedColsDelta Lake 用于收集有关数据跳过的统计信息的列数。 如果值为 -1,则表示收集所有列的统计信息。请参阅 Delta Lake 的数据跳过。 数据类型: Int默认: 32 | 
| delta.dataSkippingStatsColumns列名称的逗号分隔的列表,Delta Lake 要收集其统计信息以增强数据跳过功能。 此属性优先于 delta.dataSkippingNumIndexedCols。请参阅 Delta Lake 的数据跳过。 数据类型: String默认值:(无) | 
| delta.deletedFileRetentionDurationDelta Lake 在物理性删除逻辑上已删除的数据文件之前,保留这些文件的最短时长。 这是为了防止压缩或分区覆盖后旧读取器中出现故障。 此值应足够大,以确保: 
 请参阅为“按时间顺序查看”查询配置数据保留。 数据类型: CalendarInterval默认: interval 1 week | 
| delta.enableChangeDataFeedtrue,用于启用更改数据馈送。请参阅启用更改数据馈送。 数据类型: Boolean默认: false | 
| delta.enableTypeWideningtrue启用类型拓宽。请参阅类型拓宽。 数据类型: Boolean默认: false | 
| delta.isolationLevel必须将某事务与并发事务所作修改进行隔离的程度。 有效值为 Serializable和WriteSerializable。请参阅 Azure Databricks 上的隔离级别和写入冲突。 数据类型: String默认: WriteSerializable | 
| delta.logRetentionDurationDelta 表历史记录的保留时长。 VACUUM操作会替代此保留期阈值。每次写入检查点时,Delta Lake 都会自动清除早于保留间隔的日志条目。 如果将此属性设置为足够大的值,则会保留许多日志条目。 这应当不会影响性能,因为针对日志的操作时间恒定。 针对历史记录的操作是并行的,但会随着日志大小的增加而变得更为昂贵。 请参阅为“按时间顺序查看”查询配置数据保留。 数据类型: CalendarInterval默认: interval 30 days | 
| delta.minReaderVersion允许从此 Delta 表读取的读取器的最低所需协议读取器版本。 Databricks 不建议手动配置此属性。 请参阅 Delta Lake 功能兼容性和协议。 数据类型: Int默认: 1 | 
| delta.minWriterVersion允许写入此 Delta 表的编写器所需的最低协议编写器版本。 Databricks 不建议手动配置此属性。 请参阅 Delta Lake 功能兼容性和协议。 数据类型: Int默认: 2 | 
| delta.randomizeFilePrefixestrue,表示 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.tuneFileSizesForRewritestrue:对 Delta 表的所有数据布局优化操作始终使用较小的文件大小。false:永远不调整为较小的文件大小,也即,会阻止激活自动检测功能。请参阅配置 Delta Lake 以控制数据文件大小。 数据类型: Boolean默认值:(无) | 
| delta.parquet.compression.codec(在 Databricks Runtime 16.0 及更高版本中可用。Delta 表的压缩编解码器。 ZSTD在 Delta 表上使用 Zstandard (Zstd) 压缩。SNAPPY在 Delta 表上使用 Snappy 压缩。
 数据类型: String默认: ZSTD |