動的なファイルの排除
動的なファイルの排除によって、Delta Lake テーブルに対する多くのクエリのパフォーマンスを大幅に向上させることができます。 フィルター ステートメントまたは WHERE
句を含むクエリの動的ファイル排除トリガー。 MERGE
、UPDATE
、および DELETE
ステートメントで動的ファイルの排除を使用するには、Photon 対応コンピューティングを使用する必要があります。 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 テーブルの最小サイズ (バイト単位) を表します。 プローブ側があまり大きくない場合は、フィルターをプッシュ ダウンする意味がほぼないため、単純にテーブル全体をスキャンしてかまいません。 Delta テーブルのサイズを確認するには、DESCRIBE DETAIL table_name
コマンドを実行し、sizeInBytes
列を確認します。spark.databricks.optimizer.deltaTableFilesThreshold
(既定値は10
): 動的なファイルの排除のトリガーに必要な、結合のプローブ側の Delta テーブルのファイル数を表します。 プローブ側テーブルに含まれるファイルがしきい値よりも少ない場合、動的なファイルの排除はトリガーされません。 テーブルに含まれるファイルが数個しかない場合は、動的なファイルの排除を有効にする意味がほぼありません。 Delta テーブルのサイズを確認するには、DESCRIBE DETAIL table_name
コマンドを実行し、numFiles
列を確認します。