共用方式為


動態檔案剪除

動態檔案剪除,可以大幅改善 Delta Lake tables上許多查詢的效能。 包含篩選語句或 WHERE 子句之查詢的動態檔案剪除觸發器。 必須使用啟用了 Photon 的運算才能在 MERGEUPDATEDELETE 語句中使用動態檔案修剪功能。 只有在不使用 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 命令,然後查看 sizeInBytescolumn來尋找 Delta table 的大小。
  • spark.databricks.optimizer.deltaTableFilesThreshold(預設值為 10):代表在 join 探針端的 Delta table 所需檔案數目,以觸發動態檔案剪除。 當探查端 table 包含的檔案少於臨界值時,不會觸發動態檔案剪除。 如果 table 只有少數檔案,可能不值得啟用動態檔案剪除。 您可以執行 DESCRIBE DETAIL table_name 命令,然後查看 numFilescolumn來尋找 Delta table 的大小。