Delta Lake とは
Delta Lake は、Databricks 上のレイクハウスにテーブルの基盤を提供する、最適化されたストレージ レイヤーです。 Delta Lake は、ACID トランザクションとスケーラブルなメタデータ処理のためのファイルベースのトランザクション ログを使用して Parquet データ ファイルを拡張するオープン ソース ソフトウェアです。 Delta Lake は Apache Spark API と完全に互換性があり、構造化ストリーミングとの緊密な統合のために開発されたため、データの 1 つのコピーをバッチ操作とストリーミング操作の両方に 簡単に使用でき、大規模な増分処理を提供できます。
Delta Lake は、Azure Databricks でのすべての操作の既定のストレージ形式です。 特に指定がない限り、Azure Databricks 上のすべてのテーブルは Delta テーブルです。 Databricks はもともと Delta Lake プロトコルを開発し、オープンソース プロジェクトに積極的に貢献し続けています。 Databricks プラットフォームの最適化と製品の多くは、Apache Spark と Delta Lake によって提供される保証に基づいて構築されています。 Azure Databricks の最適化の詳細については、「Azure Databricks の最適化に関する推奨事項」を参照してください。
Delta Lake SQL コマンドの参照情報については、「Delta Lake ステートメント」を参照してください。
Delta Lake トランザクション ログには、ログを読み取るために任意のシステムで使用できる、適切に定義されたオープン プロトコルがあります。 「デルタ トランザクション ログ プロトコル」を参照してください。
Delta Lake の概要
Azure Databricks のすべてのテーブルは、既定で Delta テーブルです。 Apache Spark DataFrames または SQL を使用しているかどうかにかかわらず、既定の設定でデータをレイクハウスに保存するだけで、Delta Lake のすべての利点を得ることができます。
テーブルの作成、読み取り、書き込み、データの更新など、基本的な Delta Lake 操作の例については、「チュートリアル: Delta Lake」を参照してください。
Databricks には、Delta Lake のベスト プラクティスに関する多くの推奨事項があります。
Delta Lake へのデータの変換と取り込み
Azure Databricks には、レイクハウスへのデータの読み込みを高速化および簡略化するための製品が多数用意されています。
- Delta Live Tables:
- COPY INTO
- 自動ローダー
- データの追加 UI
- Parquet または Iceberg データを Delta Lake に増分変換する
- Parquet または Iceberg データの Delta Lake への 1 回限りの変換
- サードパーティ パートナー
インジェスト オプションの完全なリストについては、「Databricks レイクハウスにデータを取り込む」を参照してください。
Delta Lake テーブルの更新と変更
Delta Lake を使用したアトミック トランザクションには、データとメタデータを更新するための多くのオプションが用意されています。 Databricks は、テーブルの破損を回避するために、Delta Lake ファイル ディレクトリ内のデータ とトランザクション ログ ファイルを直接操作しないことを推奨しています。
- Delta Lake では、マージ操作を使用したアップサートがサポートされています。 「マージを使用した Delta Lake テーブルへの upsert」を参照してください。
- Delta Lake には、フィルターとパーティションに基づいて選択的に上書きするための多数のオプションが用意されています。 Delta Lake を使用してデータを選択的に上書きするを参照してください。
- データを書き換えることなく、手動または自動でテーブル スキーマを更新できます。 「Delta Lake のテーブル スキーマを更新する」を参照してください。
- 列マッピングを有効にして、データを書き換えずに列の名前を変更または削除します。 「Delta Lake の列マッピングを使用して列の名前変更と削除を行う」をご覧ください。
Delta Lake での増分およびストリーミング ワークロード
Delta Lake は、Azure Databricks での構造化ストリーミング用に最適化されています。 Delta Live Tables は、簡素化されたインフラストラクチャの展開、拡張スケーリング、マネージド データの依存関係を使用して、ネイティブ機能を拡張します。
前のバージョンのテーブルのクエリ
Delta テーブルに書き込むたびに、新しいテーブル バージョンが作成されます。 トランザクション ログを使用して、テーブルの変更を確認し、以前のテーブル バージョンに対してクエリを実行できます。 「Delta Lake テーブル履歴を操作する」を参照してください。
Delta Lake スキーマの機能強化
Delta Lake によって書き込み時にスキーマが検証され、テーブルに書き込まれるすべてのデータが設定した要件と一致することが確認されます。
Delta Lake を使用したファイルの管理とデータのインデックス作成
Azure Databricks によって、データ ファイルのサイズと履歴に保持されるテーブル バージョンの数に影響を与える Delta Lake の多くの既定のパラメーターが設定されます。 Delta Lake では、メタデータ解析と物理データ レイアウトの組み合わせを使用して、クエリを実行するためにスキャンされるファイルの数を減らします。
- Delta テーブルに Liquid Clustering クラスタリングを使用する
- Delta Lake に対するデータのスキップ
- データ ファイル レイアウトを最適化する
- vacuum を使用して未使用のデータ ファイルを削除する
- データ ファイル サイズを制御するように Delta Lake を構成する
Delta Lake 設定の構成と確認
Azure Databricks では、Delta Lake テーブルのすべてのデータとメタデータがクラウド オブジェクト ストレージに格納されます。 多くの構成は、テーブル レベルまたは Spark セッション内で設定できます。 Delta テーブルの詳細を確認して、構成されているオプションを確認できます。
Delta Lake と Delta Live Tables を使用したデータ パイプライン
Azure Databricks では、データのクリーニングとエンリッチが行われるときに、ユーザーがメダリオン アーキテクチャを利用して一連のテーブルを介してデータを処理することを推奨しています。 Delta Live Tables を使用すると、最適化された実行とインフラストラクチャのデプロイとスケーリングの自動化により、ETL ワークロードが簡略化されます。
Delta Lake 機能の互換性
すべての Delta Lake 機能が Databricks Runtime のすべてのバージョンにあるわけではありません。 Delta Lake のバージョン管理の詳細については、「Azure Databricks で Delta Lake 機能の互換性を管理する方法」を参照してください。
Delta Lake API のドキュメント
Delta テーブルに対するほとんどの読み取りおよび書き込み操作では、Spark SQL または Apache Spark DataFrame API を使用できます。
Delta Lake 固有の SQL ステートメントについては、 Delta Lake ステートメントを参照してください。
Azure Databricks では、Databricks Runtime の Delta Lake API とのバイナリ互換性を確保します。 各 Databricks Runtime バージョンにパッケージ化された Delta Lake API バージョンを表示するには、Databricks Runtime リリース ノートの関連記事のシステム環境に関するセクションを参照してください。 Python、Scala、Java 用の Delta Lake API のドキュメントについては、OSS Delta Lake のドキュメントを参照してください。