構造化ストリーミングで Unity Catalog を使用する
Unity Catalog で構造化ストリーミングを使用して、Azure Databricks の増分およびストリーミング ワークロードのデータ ガバナンスを管理します。 このドキュメントでは、サポートされている機能の概要と、Unity Catalog と構造化ストリーミングを一緒に使用するための推奨されるベスト プラクティスについて説明します。
Unity Catalog でサポートされている構造化ストリーミング機能
Unity Catalog では、Azure Databricks で使用できる構造化ストリーミング ソースとシンクに対する明示的な制限は追加されません。 Unity Catalog データ ガバナンス モデルを使用すると、Unity Catalog のマネージドおよび外部のテーブルからデータをストリーミングできます。 Unity Catalog で管理されている外部の場所を使用して、オブジェクト ストレージ URI を使用してデータを操作することもできます。 外部テーブルには、テーブル名またはファイル パスを使用して書き込むことができます。 Unity Catalog 上のマネージド テーブルは、テーブル名を使用して操作する必要があります。
構造化ストリーミング チェックポイントのパスを指定するときには、Unity Catalog によって管理される外部の場所を使用します。 Unity Catalog を使用してストレージを安全に接続する方法の詳細については、「Unity Catalog を使用してクラウド オブジェクト ストレージに接続する」を参照してください。
構造化ストリーミング機能のサポートは、実行している Databricks Runtime のバージョン、および割り当て済み アクセス モードと共有クラスター アクセス モードのどちらを使用しているかによって異なります。 詳細については、「Unity Catalog のストリーミングの制限事項」を参照してください。
Unity Catalog で構造化ストリーミングを使用するエンド ツー エンドのデモについては、「チュートリアル: エンド ツー エンドのレイクハウス分析パイプラインを実行する」を参照してください。
Unity Catalog でサポートされていない構造化ストリーミング機能
Unity Catalog でサポートされていない構造化ストリーミング機能の一覧については、「Unity Catalog のストリーミングの制限事項」を参照してください。
Unity カタログ ビューをストリームとして読み取る
重要
この機能はパブリック プレビュー段階にあります。
Databricks Runtime 14.1 以降では、構造化ストリーミングを使って、Unity Catalog に登録されているビューからのストリーミング読み取りを実行できます。 Azure Databricks では、Delta テーブルに対して定義されたビューからのストリーミング読み取りのみがサポートされます。
構造化ストリーミングを使ってビューを読み取るには、次の例のように、ビューの識別子を .table()
メソッドに対して指定します。
df = (spark.readStream
.table("demoView")
)
ユーザーは、ターゲット ビューに対する SELECT
特権を持っている必要があります。
ビューに対するストリーミング読み取りの構成でサポートされているオプション
ビューに対するストリーミング読み取りを構成するときは、次のオプションがサポートされます。
maxFilesPerTrigger
maxBytesPerTrigger
ignoreDeletes
skipChangeCommits
withEventTimeOrder
startingTimestamp
startingVersion
ストリーミング リーダーは、基になる Delta テーブルを定義しているファイルとメタデータにこれらのオプションを適用します。
重要
UNION ALL
で定義されているビューに対する読み取りでは、オプション withEventTimeOrder
と startingVersion
はサポートされません。
ソース ビューでサポートされる操作
すべてのビューがストリーミング読み取りをサポートしているわけではありません。 ソース ビューでサポートされていない操作には、集計と並べ替えが含まれます。
次の一覧は、サポートされている操作の説明とビュー定義の例です。
プロジェクト
説明: 列レベルのアクセス許可を制御する
[演算子]:
SELECT... FROM...
サンプル ステートメント:
CREATE VIEW project_view AS SELECT id, value FROM source_table
Assert
説明: 行レベルのアクセス許可を制御する
[演算子]:
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
Note
ビュー定義を変更して、ビューで参照されているテーブルを追加または変更したり、同じストリーミング チェックポイントを使ったりすることはできません。
制限事項
次の制限事項が適用されます。
ストリーミングできるのは、Delta テーブルによってサポートされるビューからのみです。 他のデータ ソースに対して定義されたビューはサポートされていません。
ビューを Unity Catalog に登録する必要があります。
サポートされていない演算子を使ってビューからストリーミングすると、次の例外が表示されます。
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.
サポートされていないオプションを指定すると、次の例外が表示されます。
AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.