Databricks の Delta Lake とは何ですか?
Delta Lake は、Databricks のレイクハウスのテーブルの基盤を提供する最適化されたストレージ レイヤーです。 Delta Lake は、 Parquetデータファイルをファイルベースのトランザクション ログで拡張し、ACID トランザクション とスケーラブルなメタデータ処理を実現するオープンソースのソフトウェアです。Delta Lake は Apache Spark APIと完全に互換性があり、構造化ストリーミングとの緊密な統合のために開発されたため、バッチ操作とストリーミング操作の両方でデータの単一コピーを簡単に使用でき、大規模な増分処理を提供できます。
Delta Lake は、Databricks 上のすべての操作のデフォルトの形式です。特に指定がない限り、Databricks上のすべてのテーブルはDeltaテーブルです。Databricks はもともと Delta Lake プロトコルを開発し、オープンソースプロジェクトに積極的に貢献し続けています。Databricks プラットフォームにおける最適化と製品の多くは、Apache Spark および Delta Lake によって提供される保証に基づいて構築されています。Databricksでの最適化に関する情報については、「Databricksでの最適化の推奨事項」を参照してください。
Delta Lake SQL コマンドのリファレンス情報については、「 Delta Lake ステートメント」を参照してください。
Delta Lakeトランザクションログには、どのシステムでもログを読み取るために使用できる、明確に定義されたオープンプロトコルがあります。「Deltaトランザクションログプロトコル」を参照してください。
Delta Lake の使用を開始する
Databricks では、すべてのテーブルがデフォルトで Delta Lake テーブルです。Apache Spark DataFrames と SQL のどちらを使用している場合でも、デフォルト設定でデータをレイクハウスに保存するだけで、Delta Lake のすべてのメリットを享受できます。
テーブルの作成、データの読み取り、書き込み、更新などの基本的な Delta Lake 操作の例については、 「チュートリアル: Delta Lake テーブルの作成と管理」を参照してください。
Databricksの推奨事項やDelta Lakeの利用に関するベストプラクティスについては、「 Best practices: Delta Lake」をご覧ください。
Delta Lake へのデータの変換と取り込み
Databricksは、レイクハウスへのデータの読み込みを高速化し、簡素化するための多くの機能を提供しています。
-
- チュートリアル: Lakeflow Spark宣言型パイプラインを使用してETLパイプラインを構築する
- Lakeflow Spark宣言型パイプラインを使ってエンドツーエンドのETLパイプラインを構築しましょう。
-
- Amazon S3からの増分取り込みを設定する
- Auto LoaderとLakeFlow Spark宣言型パイプラインを使ってクラウドストレージからのインクリメンタルインジェストを設定しましょう。
-
- ストリーミングテーブル
- Lakeflow Spark宣言型パイプラインでは、追加のみの取り込みや低遅延ストリーミングにストリーミングテーブルを活用してください。
-
- COPY INTOを使ってデータを読み込み始めましょう
- クラウドストレージからSQLを使ってデータを段階的かつ冪高的に読み込みます。
-
- Auto Loaderとは
- クラウドストレージからファイルが届くたびに段階的に取り込みます。
-
- ファイルアップロードを使用したテーブルの作成と変更
- DatabricksのUIからファイルをアップロードし、テーブルを作成します。
-
- パーケットと Apache Iceberg テーブルを Delta Lake に段階的にクローン
- ParquetやApache IcebergのテーブルをDelta Lakeに段階的にクローンします。
-
- Delta Lake への変換
- ParquetまたはApache IcebergテーブルをDelta Lakeに一度で変換します。
-
- 技術パートナー
- Databricksレイクハウスにサードパーティのパートナーやツールを接続します。
インジェスト オプションの完全な一覧については、「Lakeflowコネクトの標準コネクタ」を参照してください。
Delta Lake テーブルの更新と変更
Delta Lakeでのアトミックトランザクションでは、データやメタデータの更新に多くのオプションを利用できます。テーブルの破損を避けるために、DatabricksはDelta Lakeファイルディレクトリ内のデータやトランザクションログファイルに直接操作しないことを推奨しています。
-
- マージを使用してDelta Lakeテーブルにアップサートする
- マージ操作を使用して、データをDelta Lakeテーブルにアップサートします。
-
- Delta Lakeでデータを選択的に上書きする
- フィルタとパーティションに基づいて、データのサブセットを上書きします。
-
- テーブルスキーマの更新
- データを書き換えることなく、テーブルスキーマを手動または自動で更新します。
-
- Delta Lake列マッピングを使用した列の名前変更と削除
- データを書き換えずに列の名前を変更したり、削除したりできます。
Delta Lake での増分ワークロードとストリーミング ワークロード
Delta Lakeは、Databricks上の構造化ストリーミング向けに最適化されています。Lakeflow Spark宣言型パイプラインは、簡素化されたインフラストラクチャのデプロイ、強化されたスケーリング、および管理されたデータ依存関係によって、組み込み機能を拡張します。
-
- Delta Lake テーブルのストリーミングの読み取りと書き込み
- Delta Lakeのテーブルを、
readStreamとwriteStreamを使った構造化ストリーミングのソースおよびスカーとして活用してください。
-
- Databricksでチェンジデータフィードを使用する
- Delta LakeやApache Iceberg v3テーブルのバージョン間で行レベルの変化を追跡します。
以前のバージョンのテーブルをクエリする
Delta Lake テーブルに書き込むたびに、新しいテーブルバージョンが作成されます。トランザクションログを使用して、テーブルへの変更を確認し、以前のテーブルバージョンをクエリできます。テーブル履歴の操作を参照してください。
Delta Lake スキーマの機能強化
Delta Lake は、書き込み時にスキーマを検証し、テーブルに書き込まれるすべてのデータが設定した要件と一致することを確認します。
-
- スキーマ強制
- 書き込み時にスキーマを強制適用することで、データ品質を検証します。
-
- Databricksの制約
- 強制的な整合性制約と、情報的な主キー、外部キー、および一意性制約を適用します。
-
- Delta Lakeのジェネレーテッドカラム
- ユーザーが指定した関数を使用して、列の値を自動的に生成します。
-
- カスタムメタデータでテーブルを充実させる
- テーブルやカラムにコメントやカスタムメタデータを追加してデータディスカバリーを豊かにしましょう。
Delta Lake を使用したファイルの管理とデータのインデックス作成
Databricksは、データファイルのサイズと履歴に保持されるテーブルバージョンの数に影響を与える、Delta Lakeの多くの既定のパラメーターを設定します。Delta Lake は、メタデータ解析と物理データレイアウトを組み合わせて使用し、クエリを満たすためにスキャンされるファイルの数を減らします。
-
- テーブルにリキッドクラスタリングを使用する
- リキッドクラスタリングを使用して、パーティション分割なしでデータレイアウトを簡素化し、クエリパフォーマンスを最適化します。
-
- データのスキップ
- 列統計、Z-order、最適化されたデータレイアウトを使用して、クエリ実行時に無関係なファイルをスキップします。
-
- データファイルのレイアウトを最適化する
- クエリパフォーマンスを向上させるために、小さなデータファイルを圧縮します。
-
- 未使用のデータファイルをvacuumで削除する
- ストレージコストを削減するために、古いデータファイルを削除してください。
-
- 自動タイムトゥライブによる行の自動削除
- 設定可能な期間が経過した後、マネージドテーブルから行を自動的に削除します。
-
- データファイルのサイズを制御する
- ターゲットファイルのサイズを手動で制御するか、自動ファイルサイズ調整を有効にすることができます。
Delta Lake 設定の構成と確認
Databricksは、Delta Lakeテーブルのすべてのデータとメタデータをクラウドオブジェクトストレージに保存します。多くの構成は、テーブルレベルまたはSparkセッション内で設定できます。Delta Lakeテーブルの詳細を確認して、どのようなオプションが構成されているかを確認できます。
-
- 詳細説明でテーブルの詳細を確認する
- テーブルの構成とメタデータを表示するには、
DESCRIBE DETAILコマンドを使用します。
-
- テーブルプロパティのリファレンス
- デルタ湖のテーブルで利用可能な表プロパティの参考リスト。
Delta LakeおよびLakeflow Spark使用したデータパイプライン 宣言型パイプライン
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 ステートメント」を参照してください。
Databricksは、Databricks RuntimeにおけるDelta Lake APIとのバイナリ互換性を保証します。それぞれのDatabricks Runtime バージョンにパッケージ化されているDelta Lake APIのバージョンを表示するには、Databricks Runtime リリースノート の関連記事の システム環境 セクションを参照してください。Python、Scalaおよび JavaのDelta Lake APIドキュメントについては、OSSのDelta Lake のドキュメント を参照してください。