動態檔案剪除
動態檔案剪除,可以大幅改善 Delta Lake tables上許多查詢的效能。 包含篩選語句或 WHERE
子句之查詢的動態檔案剪除觸發器。 必須使用啟用了 Photon 的運算才能在 MERGE
、UPDATE
和 DELETE
語句中使用動態檔案修剪功能。 只有在不使用 Photon 時,SELECT
語句會利用動態檔案剪除。
動態檔案剪除在非分區的 tables中特別有效率,或在與非分區的 columns的連接中。 動態檔案剪除的效能影響通常與數據叢集相互關聯,因此請考慮使用 Z 順序將優點最大化。
如需動態檔案剪除的背景和使用案例,請參閱 在 Delta Lake 上使用動態檔案剪除來提高 SQL 查詢速度。
配置
動態檔案剪除是由下列 Apache Spark 組態選項所控制:
-
spark.databricks.optimizer.dynamicFilePruning
(預設值為true
):主要旗標,指示優化工具向下推入篩選。 當 set 到false
時,動態檔案剪除將不會生效。 -
spark.databricks.optimizer.deltaTableSizeThreshold
(預設值為10,000,000,000 bytes (10 GB)
):代表在 join 之探查端觸發動態檔案修剪所需的 Delta table 之大小下限(以位元組為單位)。 如果探查端不是非常大,則可能不值得向下推入篩選條件,而我們可以直接掃描整個 table。 您可以執行DESCRIBE DETAIL table_name
命令,然後查看sizeInBytes
column來尋找 Delta table 的大小。 -
spark.databricks.optimizer.deltaTableFilesThreshold
(預設值為10
):代表在 join 探針端的 Delta table 所需檔案數目,以觸發動態檔案剪除。 當探查端 table 包含的檔案少於臨界值時,不會觸發動態檔案剪除。 如果 table 只有少數檔案,可能不值得啟用動態檔案剪除。 您可以執行DESCRIBE DETAIL table_name
命令,然後查看numFiles
column來尋找 Delta table 的大小。