構造化ストリーミングで Unity Catalog を使用する
February 14, 2025
Unity Catalogを使用した構造化ストリーミングを使用して、Databricks上の増分およびストリーミングワークロードのデータガバナンスを管理します。このドキュメントでは、サポートされる機能の概要を説明し、Unity Catalogと構造化ストリーミングを併用するためのベストプラクティスを提案します。
Unity Catalogはどのような構造化ストリーミング機能をサポートしていますか?
Unity Catalog では、Databricks で使用できる構造化ストリーミング ソースとシンクに明示的な制限は追加されません。Unity Catalog データ ガバナンス モデルを使用すると、 Unity Catalogのマネージド テーブルと外部テーブルからデータをストリーミングできます。Unity Catalog によって管理される外部ロケーションを使用して、オブジェクト・ストレージURIを使用してデータを操作することもできます。外部テーブルに書き込むには、テーブル名またはファイル パスを使用します。テーブル名を使用して、 Unity Catalog 上のマネージ テーブルを操作する必要があります。
構造化ストリーミング チェックポイントのパスを指定する場合は、 Unity Catalog が管理する外部ロケーションを使用します。 Unity Catalog を使用してストレージを安全に接続する方法の詳細については、「 Unity Catalog を使用してクラウド オブジェクト ストレージとサービスに接続する」を参照してください。
構造化ストリーミング機能のサポートは、実行している Databricks Runtime バージョンと、割り当てられたアクセスモードと標準のコンピュートアクセスモードのどちらを使用しているかによって異なります。 詳細については、「 Unity Catalog のストリーミングの制限事項」を参照してください。
Unity CatalogでStructured Streamingを使用するエンドツーエンドのデモについては、「チュートリアル:エンドツーエンドのレイクハウスアナリティクスパイプラインを実行する」を参照してください。
Unity Catalogでサポートされていない構造化ストリーミング機能はどれですか?
Unity Catalog でサポートされていない構造化ストリーミング機能の一覧については、「 Unity Catalog のストリーミングの制限事項」を参照してください。
Unity Catalogビューをストリームとして読み取る
プレビュー
この機能はパブリックプレビュー段階です。
Databricks Runtime 14.1 以降では、構造化ストリーミングを使用して、Unity Catalog に登録されているビューからストリーミング読み取りを実行できます。 Databricks では、Delta テーブルに対して定義されたビューからの読み取りのストリーミングのみがサポートされています。
構造化ストリーミングでビューを読み取るには、次の例のように、ビューの識別子を .table()
メソッドに指定します。
df = (spark.readStream
.table("demoView")
)
ユーザーは、ターゲット ビューに対する SELECT
権限を持っている必要があります。
ビューに対するストリーミング読み取りを構成するためにサポートされているオプション
ビューに対するストリーミング読み取りを構成する場合は、次のオプションがサポートされています。
maxFilesPerTrigger
maxBytesPerTrigger
ignoreDeletes
skipChangeCommits
withEventTimeOrder
startingTimestamp
startingVersion
ストリーミング リーダーは、基になる Delta テーブルを定義するファイルとメタデータにこれらのオプションを適用します。
重要
UNION ALL
で定義されたビューに対する読み取りは、オプション withEventTimeOrder
と startingVersion
をサポートしません。
ソースビューでサポートされている操作
すべてのビューがストリーミング読み取りをサポートしているわけではありません。 ソース ビューでサポートされていない操作には、集計と並べ替えがあります。
次の一覧は、サポートされている操作の説明とビュー定義の例を示しています。
プロジェクト
説明: 列レベルの権限を制御します。
演算子:
SELECT... FROM...
ステートメントの例:
SQLCREATE VIEW project_view AS SELECT id, value FROM source_table
フィルタ
説明: 行レベルの権限を制御します
演算子:
WHERE...
ステートメントの例:
SQLCREATE VIEW filter_view AS SELECT * FROM source_table WHERE value > 100
ユニオンオール
説明: Results from multiple tables
演算子:
UNION ALL
ステートメントの例:
SQLCREATE VIEW union_view AS SELECT id, value FROM source_table1 UNION ALL SELECT * FROM source_table2
注:
ビュー定義を変更して、ビューで参照されるテーブルを追加または変更し、同じストリーミング・チェックポイントを使用することはできません。
制限事項
次の制限が適用されます:
ストリームできるのは、 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.