動態檔案剪除
動態檔案剪除可以大幅改善 Delta Lake 數據表上許多查詢的效能。 包含篩選語句或 WHERE
子句之查詢的動態檔案剪除觸發程式。 您必須使用已啟用 Photon 的計算,才能在、 UPDATE
和 DELETE
語句中使用MERGE
動態檔案剪除。 只有在不使用 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 資料表的大小。