动态文件修剪
动态文件修剪可以显著提高对 Delta Lake 表的许多查询的性能。 包含筛选器语句或 WHERE
子句的查询的动态文件修剪触发器。 必须使用支持 Photon 的计算才能在 MERGE
、UPDATE
和 DELETE
语句中使用动态文件修剪。 不使用 Photon 时,只有 SELECT
语句利用动态文件修剪。
动态文件修剪对于非分区表或非分区列上的联接特别有效。 动态文件修剪的性能影响通常与数据聚类相关,因此请考虑使用 Z 排序以最大限度地提高效益。
有关动态文件修剪的背景和用例,请参阅通过动态文件修剪加快 Delta Lake 的 SQL 查询速度。
配置
动态文件修剪由以下 Apache Spark 配置选项控制:
spark.databricks.optimizer.dynamicFilePruning
(默认值为true
):指示优化器向下推筛选器的主标志。 如果设置为false
,动态文件修剪不会生效。spark.databricks.optimizer.deltaTableSizeThreshold
(默认值为10,000,000,000 bytes (10 GB)
):表示连接探测侧触发动态文件修剪所需的 Delta 表的最小大小(以字节为单位)。 如果探测侧不是很大,那么向下推筛选器可能不值得,我们可以简单地扫描整个表。 可以通过运行DESCRIBE DETAIL table_name
命令然后查看sizeInBytes
列来查找 Delta 表的大小。spark.databricks.optimizer.deltaTableFilesThreshold
(默认值为10
):表示联接探测侧触发动态文件修剪所需的 Delta 表的文件数。 如果探测端表包含的文件少于阈值,则不会触发动态文件修剪。 如果表只有几个文件,则启用动态文件修剪可能不值得。 可以通过运行DESCRIBE DETAIL table_name
命令然后查看numFiles
列来查找 Delta 表的大小。