このページでは、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 テーブルのファイルとメタデータにオプションを適用します。
次のオプションがサポートされています。
maxFilesPerTriggermaxBytesPerTriggerignoreDeletesskipChangeCommitswithEventTimeOrderstartingTimestampstartingVersion
UNION ALLを使用したビューの読み取りでは、withEventTimeOrderとstartingVersionのオプションはサポートされていません。
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.
制限事項
- Apache Spark の連続処理モードはサポートされていません。 Spark Structured Streaming プログラミング ガイドの「連続処理」を参照してください。
- コンピューティング アクセス モードに基づいて Unity カタログでサポートされていない構造化ストリーミング機能の一覧については、ストリーミングの 制限事項 と、 専用コンピューティングでのストリーミングと具体化されたビューの要件に関する説明を参照してください。
- ストリーミング ソースとしてのビューには、追加の制限があります。
- Delta テーブルにクエリを実行するビューからのみストリーミングできます。 その他のデータ ソースはサポートされていません。
- ビューを Unity Catalog に登録する必要があります。 ビュー の作成を参照してください。
- ビューのストリーミング読み取りでは、すべての操作またはオプションがサポートされるわけではありません。 サポートされているストリーミング操作とサポートされているストリーミング オプションを参照してください。