Dynamic file pruning | Databricks on AWS [2022/9/8時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
動的ファイルプルーニングによって、Delta Lakeテーブルに対する数多くのクエリーのパフォーマンスを劇的に改善することができます。特に動的ファイルプルーニングは、パーティショニングされていないテーブルや、パーティショニングされていないカラムのjoinにおいて効率的なものとなります。動的ファイルプルーニングのパフォーマンスインパクトは、データのクラスタリングと創刊するので、メリットを最大化するためにZ-Orderingを使うことを検討してください。
動的ファイルプルーニングの背景やユースケースに関しては、動的ファイルプルーニングによるDelta LakeのSQLクエリーの高速化をご覧ください。
設定
動的ファイルプルーニングは、以下のApache Spark設定のオプションで制御することができます。
- spark.databricks.optimizer.dynamicFilePruning (デフォルトはtrueです): オプティマイザにフィルターをプッシュダウンすることを指示するメインのフラグです。
false
に設定されると、動的ファイルプルーニングは有効化されません。 -
spark.databricks.optimizer.deltaTableSizeThreshold
(デフォルトは10,000,000,000バイト(10 GB)): 動的ファイルプルーニングを起動するのに必要なjoinのプローブ側におけるDeltaテーブルの最小サイズ(バイト)を表現します。プローブ側がそれほど大きくない場合には、フィルターをプッシュダウンする価値は低いので、シンプルにテーブル全体をスキャンしても構いません。DESCRIBE DETAIL table_name
コマンドを実行し、sizeInBytes
カラムを参照することで、Deltaテーブルのサイズを確認することができます。 -
spark.databricks.optimizer.deltaTableFilesThreshold
(デフォルトはDatabricksランタイム8.4以降では10
、Databricksランタイム8.3以前では1000
です): 動的ファイルプルーニングを起動するのに必要なjoinのプローブ側のDeltaテーブルのファイル数を表現します。プローブ側のテーブルが閾値よりも少ない数のファイルを含んでいる場合には、動的ファイルプルーニングは起動されません。テーブルに数ファイルしかない場合、動的ファイルプルーニングを行う必要性は低くなります。DESCRIBE DETAIL table_name
コマンドを実行し、numFiles
カラムを参照することで、Deltaテーブルのファイル数を確認することができます。