Delta Lakeとは?
Delta Lake は、Databricks のレイクハウスのテーブルの基盤を提供する最適化されたストレージ レイヤーです。 は、 データACID ファイルをファイルベースのトランザクション ログで拡張し 、トランザクション とスケーラブルなメタデータ処理を実現するオープンソースDelta Lake ソフトウェア 。ParquetDelta Lake は Apache Spark APIsと完全に互換性があり、構造化ストリーミングとの緊密な統合のために開発されたため、バッチ操作とストリーミング操作の両方でデータの単一コピーを簡単に使用でき、大規模な増分処理を提供できます。
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テーブルです。Apache Spark データフレーム と SQL のどちらを使用している場合でも、デフォルト設定でデータをレイクハウスに保存するだけで、Delta Lake のすべてのメリットを享受できます。
テーブルの作成、データの読み取り、書き込み、更新などの基本的な Delta Lake 操作の例については、「 チュートリアル: Delta Lake」を参照してください。
Databricks には、 Delta Lake のベスト プラクティスに関する多くの推奨事項があります。
Delta Lake へのデータの変換と取り込み
Databricksは、レイクハウスへのデータの読み込みを高速化し、簡素化するための多数の製品を提供します。
-
DLT:
インジェスト オプションの完全な一覧については、「 Databricks レイクハウスにデータを取り込む」を参照してください。
Delta Lake テーブルの更新と変更
Delta Lakeを使用したアトミックトランザクションは、データとメタデータを更新するための多くのオプションを提供します。Databricksでは、テーブルの破損を避けるために、Delta Lakeファイルディレクトリ内のデータファイルやトランザクションログファイルと直接やり取りしないことをお勧めします。
- Delta Lake は、マージ操作を使用したアップサートをサポートします。 「merge を使用した Delta Lake テーブルへのアップサート」を参照してください。
- Delta Lake には、フィルターとパーティションに基づいて選択的な上書きを行うための多数のオプションが用意されています。 「Delta Lake を使用してデータを選択的に上書きする」を参照してください。
- テーブルスキーマは、データを書き換えることなく、手動または自動で更新できます。 「Delta Lake テーブル スキーマの更新」を参照してください。
- 列マッピングを有効にして、データを書き換えることなく列の名前を変更したり削除したりできます。 「Delta Lake 列マッピングを使用した列の名前変更と削除」を参照してください。
Delta Lake での増分ワークロードとストリーミング ワークロード
Delta Lake は、Databricks での構造化ストリーミング用に最適化されています。DLT は、インフラストラクチャのデプロイの簡素化、スケーリングの強化、データの依存関係の管理により、ネイティブ機能を拡張します。
以前のバージョンのテーブルをクエリする
Delta テーブルに書き込むたびに、新しいテーブル バージョンが作成されます。 トランザクションログを使用して、テーブルに対する変更を確認し、以前のテーブルバージョンをクエリできます。 「Delta Lake テーブル履歴の操作」を参照してください。
Delta Lake スキーマの機能強化
Delta Lakeは書き込み時にスキーマを検証し、テーブルに書き込まれたすべてのデータが設定した要件と一致することを確認します。
Delta Lake を使用したファイルの管理とデータのインデックス作成
Databricksは、データファイルのサイズと履歴に保持されるテーブルバージョンの数に影響を与える、Delta Lakeの多くの既定のパラメーターを設定します。Delta Lake は、メタデータ解析と物理データレイアウトを組み合わせて使用し、クエリを満たすためにスキャンされるファイルの数を減らします。
- Deltaテーブルにリキッドクラスタリング使用する
- Delta Lake のデータスキップ
- データファイルのレイアウトを最適化する
- 未使用のデータファイルをvacuumで削除する
- データファイルサイズを制御するようにDelta Lakeを構成する
Delta Lake 設定の構成と確認
Databricksは、Delta Lakeテーブルのすべてのデータとメタデータをクラウドオブジェクトストレージに保存します。多くの構成は、テーブルレベルまたはSparkセッション内で設定できます。Deltaテーブルの詳細を確認して、どのようなオプションが構成されているかを確認できます。
Delta LakeとDLTを使用したデータパイプライン
Databricks は、 メダリオンアーキテクチャ を活用して、データのクリーニングとエンリッチメントを行う際に、一連のテーブルを通じてデータを処理することをユーザーに推奨しています。DLTは 、最適化された実行と自動化されたインフラストラクチャのデプロイとスケーリングにより、ETLワークロードを簡素化します。
Delta Lake 機能の互換性
Delta Lake のすべての機能が Databricks Runtime のすべてのバージョンに含まれているわけではありません。 Delta Lake のバージョン管理に関する情報については、「Databricks で Delta Lake 機能の互換性を管理する方法」を参照してください。
Delta Lake API のドキュメント
DeltaSpark SQLテーブルに対するほとんどの読み取りおよび書き込み操作では、 またはApache SparkデータフレームAPIs を使用できます。
Delta Lake 固有の SQL ステートメントについては、「 Delta Lake ステートメント」を参照してください。
DatabricksDelta LakeAPIsは、 のDatabricks Runtime とのバイナリ互換性を保証します。Delta LakeAPI各Databricks Runtime バージョンにパッケージ化されている バージョンを表示するには、Databricks Runtime リリースノート の関連記事の 「システム環境 」セクションを参照してください。Delta LakeAPIsPython、Scala 、および のJava のドキュメントについては、OSSDelta Lake のドキュメント を参照してください。