動的ファイルの排除により、Delta Lake テーブルに対する多くのクエリのパフォーマンスが大幅に向上します。 クエリ オプティマイザーは、フィルター ステートメントまたは WHERE 句を含むクエリに対して動的ファイル排除をトリガーします。
MERGE、UPDATE、およびDELETEステートメントでの動的ファイルの排除には、Photon 対応のコンピューティングが必要です。
SELECTステートメントの場合、Photon は、より広範で信頼性の高い動的ファイル排除を提供します。 Photon を使用しない場合でも、クエリの形状と実行プランによっては、 SELECT ステートメントに動的ファイルの排除が適用される場合があります。
動的ファイルの排除は、パーティション分割されていないテーブルや、パーティション分割されていない列での結合の場合に特に効率的です。 動的ファイル排除のパフォーマンス効果は、多くの場合、データのクラスタリングと関連付けられるため、液体クラスタリングを使用してメリットを最大化することを検討してください。 表に液体クラスタリングを使用するを参照してください。
動的なファイルの排除の背景と使用例については、「動的なファイルの排除を使用した Delta Lake での SQL クエリの高速化」を参照してください。
設定
動的なファイルの排除は、次の Apache Spark 構成オプションで制御されます。
-
spark.databricks.optimizer.dynamicFilePruning(既定値はtrue): フィルターをプッシュ ダウンするようオプティマイザーに指示するメイン フラグです。falseに設定すると、動的ファイルの排除は有効になりません。 -
spark.databricks.optimizer.deltaTableSizeThreshold(既定値は10,000,000,000 bytes (10 GB)): 動的ファイルの排除をトリガーするために必要な結合のプローブ側の Delta テーブルの最小サイズ (バイト単位) を表します。 プローブ側があまり大きくない場合は、フィルターを押し下げる価値はないでしょう。テーブル全体をスキャンするだけです。 Delta テーブルのサイズは、DESCRIBE DETAIL table_nameコマンドを実行し、sizeInBytes列を確認することで確認できます。 -
spark.databricks.optimizer.deltaTableFilesThreshold(既定値は10): 動的ファイルの排除をトリガーするために必要な結合のプローブ側にある Delta テーブルのファイルの数を表します。 プローブ側テーブルにしきい値より少ないファイルが含まれている場合、動的ファイル排除はトリガーされません。 テーブルに少数のファイルしかない場合は、動的ファイルの排除を有効にする価値はおそらくありません。 Delta テーブルのサイズは、DESCRIBE DETAIL table_nameコマンドを実行し、numFiles列を確認することで確認できます。