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

動的なファイル プルーニングにより、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 列を確認します。