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

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

動的ファイルプルーニングは、Delta Lake テーブル上の多くのクエリのパフォーマンスを大幅に向上させることができます。クエリ最適化機能は、フィルターステートメントまたはWHERE句を含むクエリに対して、動的ファイルプルーニングを実行します。MERGEUPDATE、および 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 列を調べることで確認できます。
このページの見出し