構造化ストリーミングで Unity Catalog を使用する

このページでは、Unity カタログで構造化ストリーミングを使用して、Azure Databricksの増分ワークロードとストリーミング ワークロードのデータ ガバナンスを管理する方法について説明します。

Unity Catalog でサポートされている構造化ストリーミング機能

Unity カタログでは、Azure Databricksで使用できる構造化ストリーミング ソースとシンクに対する明示的な制限は追加されません。

Unity カタログと構造化ストリーミングを使用すると、次のことができます。

  • マネージド テーブルと外部テーブルの両方からデータをストリーム配信します。 Delta Lake と Apache Iceberg 用の Azure Databricks の Unity カタログマネージド テーブルを参照してください。
  • Unity カタログで管理されている外部の場所を使用して、オブジェクト ストレージ URI を使用してデータを操作します。
  • テーブル名またはファイル パスを使用して外部テーブルに書き込みます。 マネージド テーブルを操作するには、テーブル名を使用する必要があります。

Structured Streaming チェックポイントの場合は、Unity カタログによって管理される外部の場所でパスを使用する必要があります。 Unity カタログを使用してストレージを安全に接続する方法の詳細については、 Unity カタログを使用したクラウド オブジェクト ストレージへの接続に関するページを参照してください。

Unity カタログ ビューをストリームとして読み取る

Databricks Runtime 14.3 LTS 以降では、構造化ストリーミングを使用して、Unity カタログに登録されているビューから読み取ることができます。 基になるテーブルでは、Delta Lake 形式を使用する必要があります。 その他の制限事項については、「 制限事項」を参照してください。

構造化ストリーミングを使用してビューを読み取る場合は、ビューの識別子で .table() メソッドを使用します。

df = (spark.readStream
  .table("demoView")
)

ユーザーは、ターゲット ビューに対する SELECT 特権を持っている必要があります。

ビュー定義を変更して、ビューで参照されているテーブルを追加または変更する場合、同じストリーミング チェックポイントを使用することはできません。

サポートされているストリーミング オプション

ストリーミング リーダーは、指定されたビューの基になる Delta テーブルのファイルとメタデータにオプションを適用します。

次のオプションがサポートされています。

  • maxFilesPerTrigger
  • maxBytesPerTrigger
  • ignoreDeletes
  • skipChangeCommits
  • withEventTimeOrder
  • startingTimestamp
  • startingVersion

UNION ALLを使用したビューの読み取りでは、withEventTimeOrderstartingVersionのオプションはサポートされていません。

readChangeFeedなどのサポートされていないオプションを指定した場合、Spark では次の例外が発生します。

AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.

サポートされているストリーミング操作

サポートされる操作は次のとおりです。

Operation Description Operator Example
プロジェクト 列レベルのアクセス許可を制御します SELECT... FROM... CREATE VIEW project_view AS SELECT id, value FROM source_table
フィルター 行レベルのアクセス許可を制御します WHERE... CREATE VIEW filter_view AS SELECT * FROM source_table WHERE value > 100
すべて和集合 複数のテーブルからの結果 UNION ALL CREATE VIEW union_view AS SELECT id, value FROM source_table1 UNION ALL SELECT * FROM source_table2

サポートされていない操作には、集計、並べ替え、テーブル値関数 ( table_changes()など) が含まれます。 テーブル値関数の詳細については、 テーブル値関数 (TVF) の呼び出しを参照してください。

サポートされていない操作でビューからストリーミングする場合、Spark では次の例外が発生します。

UnsupportedOperationException: [UNEXPECTED_OPERATOR_IN_STREAMING_VIEW] Unexpected operator <operator> in the CREATE VIEW statement as a streaming source. A streaming view query must consist only of SELECT, WHERE, and UNION ALL operations.

制限事項