メインコンテンツまでスキップ

DLTの概念

DLTとは何か、それを定義する主要な概念 (パイプライン、ストリーミングテーブル、マテリアライズドビューなど)、それらの概念間の関係、およびデータ処理ワークフローでそれを使用する利点について説明します。

DLTとは?

DLT は、 SQL と Pythonでバッチおよびストリーミング データパイプラインを開発および実行するための宣言型フレームワークです。 DLT はパフォーマンスが最適化された Databricks Runtime (DBR) で実行され、DLT flows API は Apache Spark や構造化ストリーミングと同じ DataFrame API を使用します。DLTの一般的なユースケースには、クラウドストレージ(Amazon S3、Azure ADLS Gen2、Google Cloud Storageなど)やメッセージバス(Apache Kafka、Amazon Kinesis、Google Pub/Sub、Azure EventHubなど)などのソースからの増分データ取り込みが含まれます。 およびApache Pulsar)、ステートレス演算子とステートフル演算子を使用したインクリメンタルバッチおよびストリーミング変換、およびメッセージバスやデータベースなどのトランザクションストア間のリアルタイムストリーム処理。

宣言型データ処理の詳細については、「 Databricks での手続き型データ処理と宣言型データ処理」を参照してください。

DLTの利点は何ですか?

Sparkの宣言型の性質は、 DLTおよびApache Spark 構造化ストリーミング を使用してデータパイプラインを開発し、 ジョブAPIs Databricks Runtimeを介した手動オーケストレーションを使用してDatabricksで実行する場合と比較して、次の利点があります。

  • 自動オーケストレーション : DLT パイプラインは、処理ステップ ("フロー" と呼ばれます) を自動的に調整して、正しい実行順序と並列処理の最大レベルを確保し、最適なパフォーマンスを実現します。さらに、DLT パイプラインは、一時的な障害を自動的かつ効率的に再試行します。再試行プロセスは、最も詳細でコスト効率の高い単位である Spark タスクから始まります。タスク レベルの再試行が失敗した場合、DLT はフローの再試行を続行し、必要に応じてパイプライン全体を再試行します。
  • 宣言型処理 : DLT は、手動の Spark コードと構造化ストリーミング コードを数百行または数千行に短縮できる宣言型関数を提供します。のDLT Apply ChangesAPI は、CDCSCD Type 1 とSCD Type 2 の両方をサポートし、チェンジデータキャプチャ () イベントの処理を簡素化します。これにより、順不同のイベントを処理するための手動コードが不要になり、ストリーミングのセマンティクスやウォーターマークなどの概念を理解する必要もありません。
  • インクリメンタル処理 : DLT は、マテリアライズドビューの インクリメンタル処理 エンジンを提供します。これを使用するには、バッチ セマンティクスを使用して変換ロジックを記述し、エンジンは可能な限り新しいデータとデータソースの変更のみを処理します。 インクリメンタル処理により、ソースで新しいデータや変更が発生した場合の非効率的な再処理が削減され、インクリメンタル処理を処理するための手動コードが不要になります。

主要な概念

次の図は、DLT の最も重要な概念を示しています。

DLT のコア概念が非常に高いレベルで互いにどのように関連しているかを示す図

フロー

フローは、DLT の基本的なデータ処理概念であり、ストリーミングとバッチ セマンティクスの両方をサポートします。フローは、ソースからデータを読み取り、ユーザー定義の処理ロジックを適用して、結果をターゲットに書き込みます。DLTは、Spark構造化ストリーミングと同じストリーミング フローの種類 ( 追加 、 更新 、 完了) を共有します。(現在、 Append フローのみが公開されています。詳細については、 構造化ストリーミングの出力モードを参照してください。

DLT には、追加のフロー タイプも用意されています。

  • Apply Changes は、順不同の CDC イベントを処理し、SCD Type 1 と SCD Type 2 の両方をサポートする DLT のユニークなストリーミングフローです。
  • マテリアライズドビュー は、DLTのユニークなバッチフローであり、可能な限り新しいデータとソーステーブルの変更のみを処理します。

詳細については、次を参照してください。

ストリーミングテーブル

ストリーミングテーブル はUnity Catalog マネージドテーブルの形式であり、DLT パイプラインのストリーミング ターゲットでもあります。ストリーミングテーブルには、1 つ以上のストリーミング フロー ( 追加変更の適用 ) を書き込むことができます。 Apply Changes は、ストリーミングテーブルでのみ使用できる独自のストリーミング フローです。 ストリーミングフローは、ターゲットストリーミングテーブルとは別に明示的に定義できます。ストリーミング フローをストリーミングテーブル定義の一部として暗黙的に定義することもできます。

詳細については、次を参照してください。

マテリアライズドビュー

A マテリアライズドビュー は、Unity Catalog マネージドテーブルの形式であり、バッチ ターゲットでもあります。マテリアライズドビューには、1 つ以上のマテリアライズドビューフローを書き込むことができます。マテリアライズドビューがストリーミングテーブルと異なるのは、常にマテリアライズドビューの定義の一部としてフローを暗黙的に定義する点です。

詳細については、次を参照してください。

シンク

シンク は DLT のストリーミング ターゲットであり、現在、Delta テーブル、Apache Kafka トピック、Azure EventHubs トピックがサポートされています。シンクには、1 つ以上のストリーミング フロー ( Append ) を書き込むことができます。

詳細については、次を参照してください。

パイプライン

パイプライン は、DLT の開発と実行の単位です。パイプラインには、1 つ以上のフロー、ストリーミングテーブル、マテリアライズドビュー、およびシンクを含めることができます。 DLTを使用するには、パイプライン ソース コードでフロー、ストリーミングテーブル、マテリアライズドビュー、およびシンクを定義し、パイプラインを実行します。パイプラインの実行中に、定義されたフロー、ストリーミングテーブル、マテリアライズドビュー、シンクの依存関係が分析され、実行順序と並列化の順序が自動的に調整されます。

詳細については、次を参照してください。

DLT 用の Databricks SQL

DLTは、ストリーミングテーブルとマテリアライズドビューを.ETLDatabricks SQL標準 SQL を使用して、 Databricks SQLでストリーミングテーブルとマテリアライズドビューを作成および更新できます。 ストリーミングテーブルとマテリアライズドビュー Databricks SQL Databricks インフラストラクチャ上で実行され、 DLT パイプラインと同じ処理セマンティクスを持ちます。 Databricks SQLでストリーミングテーブルとマテリアライズドビュー を使用すると、フローはストリーミングテーブルとマテリアライズドビュー の定義の一部として暗黙的に定義されます。

詳細については、次を参照してください。

詳細情報