Unity Catalog と構造化ストリーミングの併用
このページでは、Databricks 上の増分ワークロードとストリーミングワークロードのデータガバナンスを管理するために、Unity Catalog と構造化ストリーミングを使用する方法について説明します。
Unity Catalog はどのような構造化ストリーミング機能をサポートしていますか?
Unity Catalogは、Databricksで利用可能な構造化ストリーミングのソースとシンクに対して、明示的な制限を追加していません。
Unity Catalogと構造化ストリーミングを使用すると、次のことが可能になります。
- マネージドテーブルと外部テーブルの両方からデータをストリームします。 Delta LakeおよびApache IcebergのDatabricksのUnity Catalogマネージドテーブルを参照してください。
- Unity Catalogが管理する外部ロケーションを使用して、オブジェクトストレージURIを介してデータとやり取りします。
- テーブル名またはファイルパスのいずれかを使用して、外部テーブルに書き込みます。マネージドテーブルと対話するには、テーブル名を使用する必要があります。
構造化ストリーミングのチェックポイントでは、Unity Catalogによって管理される外部ロケーションのパスを使用する必要があります。Unity Catalog とストレージを安全に接続する方法の詳細については、 「Unity Catalog を使用してクラウド オブジェクト ストレージに接続する」を参照してください。
Unity Catalogビューをストリームとして読み取る
Databricks Runtime 14.3 LTS以降では、構造化ストリーミングを使用して、 Unity Catalogに登録されたビューから読み取ることができます。 基となるテーブルは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.
サポートされているストリーミング操作
サポートされている操作は以下のとおりです。
オペレーション | 説明 | オペレーター | 例 |
|---|---|---|---|
プロジェクト | 列レベルのアクセス許可を制御します |
|
|
フィルタ | 行レベルのアクセス許可を制御します |
|
|
ユニオンオール | 複数のテーブルからの結果 |
|
|
サポートされていない操作には、集計、ソート、および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 構造化ストリーミング プログラミング ガイドの 連続処理 を参照してください。
- コンピュート アクセス モードに基づく Unity Catalog でサポートされていない構造化ストリーミング機能の一覧については、「 ストリーミングの制限 事項」および「 専用コンピュートのストリーミングとマテリアライズドビューの要件」を参照してください。
- ストリーミングソースとしての視聴には、以下の追加の制限があります。
- Deltaテーブルをクエリするビューからのみストリーミングできます。 その他のデータソースはサポートされていません。
- Unity Catalogでビューを登録する必要があります。 ビューの作成を参照してください。
- ビューに対するストリーミング読み取りは、すべての操作やオプションをサポートしているわけではありません。サポートされているストリーミング操作とサポートされているストリーミングオプションを参照してください。