Azure Databricks の Delta Lake とは

Delta Lake は、Databricks 上のレイクハウスにテーブルの基盤を提供する、最適化されたストレージ レイヤーです。 Delta Lake は、ACID トランザクションとスケーラブルなメタデータ処理のためのファイルベースのトランザクション ログを使用して Parquet データ ファイルを拡張するオープン ソース ソフトウェアです。 Delta Lake は Apache Spark API と完全に互換性があり、構造化ストリーミングとの緊密な統合のために開発されたため、データの 1 つのコピーをバッチ操作とストリーミング操作の両方に 簡単に使用でき、大規模な増分処理を提供できます。

Delta Lake は、Azure Databricks でのすべての操作の既定のストレージ形式です。 特に指定しない限り、Azure Databricksのすべてのテーブルは Delta Lake テーブルです。 Databricks はもともと Delta Lake プロトコルを開発し、オープンソース プロジェクトに積極的に貢献し続けています。 Databricks プラットフォームの最適化と製品の多くは、Apache Spark と Delta Lake によって提供される保証に基づいて構築されています。 Azure Databricks の最適化の詳細については、「Azure Databricks の最適化に関する推奨事項」を参照してください。

Delta Lake SQL コマンドの参照情報については、「Delta Lake ステートメント」を参照してください。

Delta Lake トランザクション ログには、ログを読み取るために任意のシステムで使用できる、適切に定義されたオープン プロトコルがあります。 「デルタ トランザクション ログ プロトコル」を参照してください。

Delta Lake の概要

Azure Databricksのすべてのテーブルは、既定で Delta Lake テーブルです。 Apache Spark DataFrames または SQL のどちらを使用している場合でも、既定の設定でデータを Lakehouse に保存するだけで、Delta Lake のすべての利点が得られます。

テーブルの作成、データの読み取り、書き込み、更新などの基本的な Delta Lake 操作の例については、「 チュートリアル: Delta Lake テーブルの作成と管理」を参照してください。

Databricks の推奨事項と Delta Lake の使用に関するベスト プラクティスについては、「 ベスト プラクティス: Delta Lake」を参照してください。

Delta Lake へのデータの変換と取り込み

Azure Databricksには、レイクハウスへのデータの読み込みを高速化し、簡素化するための多くの機能があります。

Method 説明
チュートリアル: Lakeflow Spark 宣言パイプラインを使用して ETL パイプラインを構築する Lakeflow Spark 宣言型パイプラインを使用して、エンドツーエンドの ETL パイプラインを構築します。
Azure Data Lake Storage からのインクレメンタル インジェストを設定します 自動ローダーと Lakeflow Spark 宣言パイプラインを使用して、クラウド ストレージからの増分インジェストを設定します。
ストリーミング テーブル Lakeflow Spark 宣言型パイプラインでの追加のみのインジェストと待機時間の短いストリーミングには、ストリーミング テーブルを使用します。
COPY INTO を使用してデータを読み込む SQL を使用してクラウド ストレージからデータを増分的かつべき等的に読み込みます。
自動ローダーとは クラウド ストレージから到着したファイルを段階的に取り込みます。
ファイルのアップロードを使用してテーブルを作成または変更する Azure Databricks UI からファイルをアップロードし、テーブルを作成します。
Parquet テーブルと Apache Iceberg テーブルを Delta Lake に段階的にクローンする Parquet テーブルまたは Apache Iceberg テーブルを Delta Lake に段階的にクローンします。
Delta Lake に変換する Parquet テーブルまたは Apache Iceberg テーブルから Delta Lake への 1 回限りの変換。
テクノロジ パートナー サードパーティのパートナーとツールをAzure Databricks lakehouse に接続します。

インジェスト オプションの完全な一覧については、 Lakeflow Connect の標準コネクタを参照してください。

Delta Lake テーブルの更新と変更

Delta Lake を使用したアトミック トランザクションを使用すると、データとメタデータを更新するための多くのオプションを使用できます。 テーブルの破損を回避するために、Databricks では、Delta Lake ファイル ディレクトリ内のデータ およびトランザクション ログ ファイルを直接操作しないようにすることをお勧めします。

Operation 説明
マージを使用して Delta Lake テーブルにアップサートする マージ操作を使用して Delta Lake テーブルにデータをアップサートします。
Delta Lake でデータを選択的に上書きする フィルターとパーティションに基づいてデータのサブセットを上書きします。
スキーマの進化を使用してテーブル スキーマを更新する データを書き換えることなく、テーブル スキーマを手動または自動的に更新します。
Delta Lake の列マッピングを使用して列の名前変更と削除を行う データを書き換えずに列の名前を変更または削除します。

Delta Lake での増分およびストリーミング ワークロード

Delta Lake は、Azure Databricks での構造化ストリーミング用に最適化されています。 Lakeflow Spark 宣言型パイプラインは、 インフラストラクチャのデプロイの簡略化、拡張されたスケーリング、およびマネージド データの依存関係を使用して、組み込みの機能を拡張します。

特徴 説明
Delta Lake テーブル ストリーミングの読み取りと書き込み readStreamwriteStreamを使用した構造化ストリーミングのソースとシンクとして Delta Lake テーブルを使用します。
Azure Databricksで変更データ フィードを使用する Delta Lake または Apache Iceberg v3 テーブルのバージョン間の行レベルの変更を追跡します。

前のバージョンのテーブルのクエリ

Delta Lake テーブルへの書き込みごとに、新しいテーブル バージョンが作成されます。 トランザクション ログを使用して、テーブルの変更を確認し、以前のテーブル バージョンに対してクエリを実行できます。 テーブル履歴の操作を参照してください。

Delta Lake スキーマの機能強化

Delta Lake は書き込み時にスキーマを検証し、テーブルに書き込まれるすべてのデータが設定した要件と一致することを確認します。

特徴 説明
スキーマの適用 書き込み時にスキーマを適用して、データ品質を検証します。
Azure Databricks の制約 適用された整合性制約と情報主キー、外部キー、および一意の制約を適用します。
Delta Lake で生成された列 ユーザー指定の関数を使用して列の値を自動的に生成します。
カスタム メタデータを使用してテーブルを強化する テーブルと列にコメントとカスタム メタデータを追加して、データ検出を強化します。

Delta Lake を使用したファイルの管理とデータのインデックス作成

Azure Databricks によって、データ ファイルのサイズと履歴に保持されるテーブル バージョンの数に影響を与える Delta Lake の多くの既定のパラメーターが設定されます。 Delta Lake では、メタデータ解析と物理データ レイアウトの組み合わせを使用して、クエリを実行するためにスキャンされるファイルの数を減らします。

特徴 説明
テーブルに液体クラスタリングを使用する 液体クラスタリングを使用してパーティション分割することなく、データレイアウトを簡素化し、クエリのパフォーマンスを最適化します。
データスキッピング 列統計、Z オーダー、最適化されたデータ レイアウトを使用して、クエリ時に無関係なファイルをスキップします。
データ ファイル レイアウトを最適化する クエリのパフォーマンスを向上させるために、小さなデータ ファイルを圧縮します。
vacuum を使用して未使用のデータ ファイルを削除する 古いデータ ファイルを削除して、ストレージ コストを削減します。
自動 Time-to-Live による行の自動削除 構成可能な期間が経過すると、マネージド テーブルから行が自動的に削除されます。
データ ファイルのサイズを制御する ターゲット ファイル サイズを手動で制御するか、ファイル サイズの自動チューニングを有効にします。

Delta Lake 設定の構成と確認

Azure Databricks では、Delta Lake テーブルのすべてのデータとメタデータがクラウド オブジェクト ストレージに格納されます。 多くの構成は、テーブル レベルまたは Spark セッション内で設定できます。 Delta Lake テーブルの詳細を確認して、構成されているオプションを確認できます。

特徴 説明
テーブルの詳細と説明の詳細を確認する DESCRIBE DETAIL コマンドを使用してテーブルの構成とメタデータを表示します。
テーブルプロパティリファレンス Delta Lake テーブルで使用できるテーブル プロパティの参照リスト。

Delta Lake と Lakeflow Spark の宣言型パイプラインを使用したデータパイプライン

Azure Databricks では、データのクリーニングとエンリッチが行われるときに、ユーザーがメダリオン アーキテクチャを利用して一連のテーブルを介してデータを処理することを推奨しています。 Lakeflow Spark 宣言型パイプラインは、 最適化された実行とインフラストラクチャの自動デプロイとスケーリングによって ETL ワークロードを簡素化します。

Delta Lake 機能の互換性

すべての Delta Lake 機能が Databricks Runtime のすべてのバージョンにあるわけではありません。 Delta Lake のバージョン管理の詳細については、 Delta Lake の機能の互換性とプロトコルに関する記事を参照してください。

Delta Lake API のドキュメント

Delta Lake テーブルに対するほとんどの読み取り操作と書き込み操作では、 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 のドキュメントを参照してください。