動的ファイルプルーニング

動的ファイルプルーニングは、Delta Lake テーブル上の多くのクエリーのパフォーマンスを大幅に向上させることができます。 動的ファイルプルーニングは、パーティション化されていないテーブル、またはパーティション化されていない列での結合に特に効率的です。 動的ファイルプルーニングのパフォーマンスへの影響は、多くの場合、データのクラスターと相関しているため、利点を最大化するために Z-ordering の使用を検討してください。

重要

Photon対応コンピュートを使用して、 MERGEUPDATE、および DELETE ステートメントで動的ファイルプルーニングを使用する必要があります。 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 列を確認します。