メインコンテンツまでスキップ

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()メソッドを使用します。

Python
df = (spark.readStream
.table("demoView")
)

ユーザーは、ターゲット ビューに対する SELECT 権限を持っている必要があります。

ビュー定義を変更して、ビュー内で参照されているテーブルを追加または変更した場合、同じストリーミングチェックポイントを使用することはできません。

サポートされているストリーミングオプション

ストリーミングリーダーは、指定されたビューの基となるDeltaテーブルのファイルとメタデータにオプションを適用します。

以下のオプションがサポートされています。

  • maxFilesPerTrigger
  • maxBytesPerTrigger
  • ignoreDeletes
  • skipChangeCommits
  • withEventTimeOrder
  • startingTimestamp
  • startingVersion

UNION ALLを含むビューの読み取りでは、 withEventTimeOrderおよびstartingVersionオプションはサポートされません。

readChangeFeedのようなサポートされていないオプションを指定すると、Spark は次の例外を発生させます。

Console
AnalysisException: [UNSUPPORTED_STREAMING_OPTIONS_FOR_VIEW.UNSUPPORTED_OPTION] Unsupported for streaming a view. Reason: option <option> is not supported.

サポートされているストリーミング操作

サポートされている操作は以下のとおりです。

オペレーション

説明

オペレーター

プロジェクト

列レベルのアクセス許可を制御します

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次の例外を発生させます。

Console
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.

制限事項