What is predictive I/O? | Databricks on AWS [2023/6/8時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Predictive I/Oはデータ操作の性能を改善するDatabricksの最適化処理のコレクションです。Predictive I/Oの機能は以下のカテゴリーに分類されます:
- データのスキャン、読み込みに要する時間を削減する読み込み処理の高速化。
- 更新、削除、マージの際の再書き込みに必要なデータの量を削減する更新処理の高速化。
Predictive I/OはDatabricksのPhotonエンジンでのみ使用できます。
読み込みを高速にするためにpredictive I/Oを使う
Predictive I/Oは、サポートされるコンピュートタイプのすべてのオペレーションのデータスキャンやフィルタリングのパフォーマンスを高速にするために活用されます。
重要!
Predictive I/Oの読み込み処理は、サーバレスSQLウェアハウス、pro SQLウェアハウス、Databricksランタイム11.2以降が稼働しているPhoton高速化クラスターでサポートされています。
Predictive I/Oは、以下を行うためにディープラーニング技術を適用することで、スキャンの性能を改善します:
- 最も効率的な読み込みのアクセスパターンを特定し、実際に必要なデータのみをスキャンします。
- クエリー結果を生成する際に不要な列や行のデコードを除外します。
- 行にマッチする選択的なクエリーの検索条件の確率を計算する。クエリーが実行されると、次のマッチ行がどこにあるのかを予測するためにこの確率を使用し、クラウドストレージからそのデータのみを読み込みます。
更新を高速にするためにpredictive I/Oを使う
プレビュー
Predictive I/Oの更新処理は、サーバレスSQLウェアハウス、pro SQLウェアハウス、Databricksランタイム11.2以降が稼働しているPhoton高速化クラスターでサポートされており、パブリックプレビューとなっています。
Photonが有効化されている計算資源を使用している場合、削除ベクトルが有効化されているすべてのテーブルでPredictive I/Oが自動的に使用されます。削除ベクターとは何ですか?をご覧ください。
以下のようにDelta Lakeテーブルのプロパティを設定することで、Delta Lakeテーブルで削除ベクトルを有効化することができます:
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
警告!
削除ベクトルを有効化すると、テーブルのプロトコルバージョンがアップグレードされます。テーブルのプロトコルバージョンのアップグレードを取り消すことはできません。アップグレードの後は、削除ベクトルをサポートしていないDelta Lakeクライアントでテーブルを読み込むことができなくなります。Databricks は Delta Lake 機能の互換性をどのように管理しますか?をご覧ください。
Predictive I/Oは、Deltaテーブルのデータ変更の際の完全なファイルの再書き込みの頻度を削減することで、更新処理を高速にするために削除ベクトルを活用します。Predictive I/OはDELETE
、MERGE
、UPDATE
オペレーションを最適化します。
行が更新、削除された際にデータファイルのすべてのレコードを再書き込みするのではなく、Predictive I/Oはターゲットのデータファイルから削除されたレコードを指し示すために削除ベクトルを使用します。更新を指し示すために追加されたデータファイルが使用されます。
テーブルに対する以降の読み込みは、最新のテーブルバージョンに指示された変更を適用することで現状のテーブルの状態を解決します。
重要!
Predictive I/Oの更新処理は、削除ベクトルによるすべての制限を共有します。Databricksランタイム12.1以降では以下の制限が存在します:
- Delta Sharingは削除ベクトルが有効化されたテーブルではサポートされません。
- 削除ベクトルが存在するテーブルでマニフェストファイルを作成することはできません。
REORG TABLE ... APPLY (PURGE)
を実行し、マニフェストファイルを作成するために、同時実行の書き込みが行われていないことを確認してください。 - 削除ベクトルが有効化されたテーブルでインクリメンタルにマニフェストファイルを生成することはできません。