予測 I/O とは
予測 I/O は、データ操作のパフォーマンスを向上させる Azure Databricks 最適化のコレクションです。 予測 I/O 機能は、次のカテゴリにグループ化されます。
- 高速読み取りでは、データのスキャンと読み取りに要する時間が短縮されます。
- 高速更新では、更新、削除、マージ中に書き換える必要があるデータの量が減ります。
予測 I/O は、Azure Databricks 上の Photon エンジン専用です。
予測 I/O を使用して読み取りを高速化する
予測 I/O は、サポートされるコンピューティングの種類に対するすべての操作のデータ スキャンとフィルター処理のパフォーマンスを高速化するために使用されます。
重要
予測 IO の読み取りは、種類がサーバーレスおよび Pro である SQL ウェアハウスと、Databricks Runtime 11.3 LTS 以降を実行する Photon 高速化クラスターによってサポートされます。
予測 I/O を使用すると、ディープ ラーニング手法を適用して以下を行うことで、スキャンのパフォーマンスが向上します。
- データを読み取る最も効率的なアクセス パターンを判断し、実際に必要なデータのみをスキャンします。
- クエリ結果の生成に必要のない列と行のデコードが行われないようにします。
- 1 行を照合する選択的クエリで検索条件の確率を計算します。 クエリを実行する中で、これらの確率を使用して次に一致する行が発生する場所を予測し、クラウド ストレージからそのデータのみを読み取ります。
予測 I/O を使用して更新を高速化する
次に示す Photon 対応のコンピューティングの種類を使うと、削除ベクトルが有効なすべてのテーブルに対して更新の予測 I/O が自動的に使われます。
- サーバーレス SQL ウェアハウス。
- Pro SQL ウェアハウス。
- Databricks Runtime 14.0 以降を実行しているクラスター。
Note
更新の予測 I/O は Databricks Runtime 12.2 LTS 以降でサポートされていますが、Databricks では、パフォーマンスを最大限に高めるために 14.0 以降を使うことをお勧めします。
「削除ベクトルとは」を参照してください。
重要
ワークスペース管理者設定では、新しい Delta テーブルに対して削除ベクトルを自動で有効にするかどうかをコントロールします。 「削除ベクトルの自動有効化」を参照してください。
Delta Lake テーブルの削除ベクトルのサポートを有効にするには、Delta Lake テーブル プロパティを設定します。 次の例のように、テーブルの作成時に削除ベクトルを有効にするか、既存のテーブルを変更します。
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
警告
削除ベクトルを有効にすると、テーブル プロトコルのバージョンがアップグレードされます。 アップグレード後、削除ベクトルをサポートしていない Delta Lake クライアントはテーブルを読み取りできなくなります。 「Azure Databricks で Delta Lake 機能の互換性を管理する方法は?」を参照してください。
削除ベクトルをサポートするクライアントの一覧については、「Delta クライアントとの互換性」を参照してください。
Databricks Runtime 14.1 以降では、他の Delta クライアントとの互換性を有効にするため、削除ベクトル テーブル機能を削除できます。 「Delta テーブル機能の削除」を参照してください。
予測 I/O では、削除ベクトルを利用して、Delta テーブルのデータ変更中の完全なファイル書き換えの頻度を減らすことで、更新を高速化します。 予測 I/O では、DELETE
、MERGE
、UPDATE
の各操作が最適化されます。
予測 I/O では、レコードが更新または削除されたときにデータ ファイル内のすべてのレコードを書き換えるのではなく、削除ベクトルを使用して、ターゲット データ ファイルからレコードが削除されたことを示します。 補足データ ファイルが更新を示すために使用されます。
テーブルに対する後続の読み取りでは、最新のテーブル バージョンに対する変更を適用することで、現在のテーブルの状態を解決します。
重要
予測 I/O 更新では、削除ベクトルとすべての制限事項が共有されます。 Databricks Runtime 12.2 LTS 以降では、次の制限があります。
- 削除ベクトルが有効になっているテーブルでは、差分共有はサポートされていません。
- 削除ベクトルが存在するテーブルのマニフェスト ファイルを生成することはできません。
REORG TABLE ... APPLY (PURGE)
を実行し、マニフェストを生成するために同時書き込み操作が実行されていないことを確認します。 - 削除ベクトルが有効なテーブルのマニフェスト ファイルを増分生成することはできません。