メインコンテンツまでスキップ

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

動的ファイルプルーニングにより、Delta Lake テーブルに対する多くのクエリのパフォーマンスを大幅に向上させることができます。 動的ファイル・プルーニング・トリガは、フィルタ文または WHERE 句を含むクエリに対してトリガします。 MERGEUPDATE、および DELETE ステートメントで動的ファイルプルーニングを使用するには、Photon 対応コンピュートを使用する必要があります。Photonが使用されていないときに動的ファイルプルーニングを活用するのは、 SELECT ステートメントのみです。

動的ファイルプルーニングは、パーティション化されていないテーブルや、パーティション化されていないカラムのジョインに特に効率的です。 動的ファイルプルーニングのパフォーマンスへの影響は、多くの場合、データのクラスタリングと相関しているため、 Z-Ordering を使用してメリットを最大化することを検討してください。

動的ファイルプルーニングの背景とユースケースについては、「 動的ファイルプルーニングを使用した 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 列を調べることで確認できます。