本节介绍一些Delta中比较重要的参数。

Delta的设置参数分为三类:
  • Spark SQL设置,即设置SQL运行时的参数。
  • 运行时参数,即可以在Session中动态设置的参数,以 spark.databricks.delta.前缀开头。
  • 非运行时参数,只能够在Spark的配置文件中配置为全局参数,或者建表时在TBLPROPERTIES中指定为表参数。表参数的优先级高于全局参数。当设置为全局参数时,配置前缀为spark.databricks.delta.properties.defaults.,当设置为 TBLPROPERTIES时,前缀为 delta.
参数 描述
spark.databricks.delta.snapshotPartitions 默认值 10。

此参数为delta log元数据的partition数量。当delta log特别大时,需要增大此值,反之减小此值的设置。该值的大小对于delta table的解析性能影响较大。

spark.databricks.delta.retentionDurationCheck.enabled 默认值 true。

为了防止用户执行Vacuum时设置过小的保留时间(例如用户不想访问历史版本,而是直接清空截至目前时间的所有小文件(如果它们已经被合并了的话)),Delta会对时间做检查,并阻止用户这种行为。如果您确实要这么做,则需要关闭此检查。

spark.databricks.delta.schema.autoMerge.enabled 默认值 false。

Delta有校验写入数据是否符合表定义Schema的功能,用于保证写入数据的正确性。当用户数据的Schema发生变更后,需要在写入数据时在 option中显示指定mergeSchema为true。如果您期望当数据Schema发生变化自动进行Schema的合并,请设置该值为true。但是我们仍然建议您使用显示指定的方式,而不是让它自动合并Schema。

spark.databricks.delta.retentionDurationCheck.enabled 默认值为true。

清理墓碑文件时是否进行安全期检查。

spark.databricks.delta.properties.defaults.deletedFileRetentionDurationdelta.deletedFileRetentionDuration 默认值为interval 1 week。
Delta墓碑文件的安全期。清空未超过安全期内的墓碑文件将会抛出异常(如果spark.databricks.delta.retentionDurationCheck.enabled为true的话)。
说明 此值应当大于等于1个小时。
spark.databricks.delta.properties.defaults.logRetentionDurationdelta.logRetentionDuration 默认值为interval 30 days。
Delta log文件过期时间。Delta log过期被定义为:
  1. 该log文件对应的数据文件已经做过了compaction。
  2. 该log文件超过了上述文件过期时间。每当Delta log进行checkpoint动作时,会检查是否有需要删除的过期文件,如果有,则删除这些过期文件以防Delta log文件无限增长。
spark.sql.sources.parallelPartitionDiscovery.parallelism 默认值 1000。
此参数为Delta扫描文件时所用的并行度。如果文件数量较少,则减小此值。目前仅使用在Vacuum中。如果设置不当,影响Vacuum扫描文件的效率。
说明 此参数为Spark SQL参数。