Unity Catalog と構造化ストリーミングの併用
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で構造化ストリーミングを使用したエンドツーエンドのデモについては、「チュートリアル: 実行 an エンドツーエンド レイクハウス アナリティクス パイプライン」を参照してください。
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.