动态文件修剪

动态文件修剪(DFP)可以显着提高Delta表上许多查询的性能。对于非分区表或非分区列上的联接,DFP尤其有效。DFP对性能的影响通常与clustering数据相关,因此请考虑使用Z-Ordering来最大化DFP的收益。

说明

详细内容可参考Databricks官网文章:动态文件修剪

有关DFP广告管理系统的背景和用例,请参阅带有动态文件修剪的Delta Lake上的快速SQL查询

注意

在Databricks Runtime 6.1及更高版本中可用。

DFP由以下Apache Spark配置选项控制:

  • spark.databricks.optimizer.dynamicPartitionPruning(默认值为true):指示优化器下推DFP过滤器的主要标志。设置为false时,DFP将无效。

  • spark.databricks.optimizer.deltaTableSizeThreshold(默认值为1000000000字节(10 GB)):表示连接探测端触发DFP所需的Delta表的最小大小(以字节为单位)。如果探测 端不是很大,可能不值得按下过滤器,我们可以简单地扫描整个表。通过运行DESCRIBE DETAIL table_name命令,然后查看sizeInBytes列,可以找到Delta表的大小。

  • spark.databricks.optimizer.deltaTableFilesThreshold(默认值为1000):表示连接探测端触发DFP所需的Delta表的文件数。当探测端表包含的文件少于阈值时,DPP不会被触发。如果一个表只有几个文件,那么可能不值得启用DFP。通过运行DESCRIBE DETAIL table_name命令,然后查看numFiles列,可以找到Delta表的大小。