使用 Unity Catalog 與結構化串流結合
使用結構化串流搭配 Unity 目錄來管理 Azure Databricks 上累加和串流工作負載的數據控管。 本檔概述支援的功能,並建議搭配使用 Unity 目錄和結構化串流的最佳作法。
Unity 目錄支援哪些結構化串流功能?
Unity Catalog 不會對 Azure Databricks 上可用的結構化串流的來源與匯入端新增任何明確限制。 Unity 目錄數據控管模型可讓您從 Unity 目錄中的 Managed 和外部數據表串流數據。 您也可以使用 Unity 目錄所管理的外部位置,使用物件記憶體 URI 與資料互動。 您可以使用資料表名稱或檔案路徑寫入外部資料表。 您必須使用資料表名稱與 Unity Catalog 上的管理資料表互動。
指定結構化串流檢查點的路徑時,請使用 Unity 目錄所管理的外部位置。 若要深入瞭解使用 Unity 目錄安全地連接記憶體,請參閱 使用 Unity 目錄連線到雲端物件記憶體和服務。
結構化串流功能支援會根據您執行的 Databricks 執行時間版本,以及您使用指派或標準計算存取模式而有所不同。 如需詳細資訊,請參閱 Unity 目錄
如需在 Unity Catalog 中使用結構化串流的端對端示範,請參閱 教學課程:運行端對端 Lakehouse 分析管線。
Unity 目錄不支援哪些結構化串流功能?
如需 Unity 目錄不支援的結構化串流功能清單,請參閱 unity 目錄的
以數據流方式讀取 Unity Catalog 視圖
在 Databricks Runtime 14.1 和更新版本中,您可以使用 Structured Streaming,從已向 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
Filter
描述:控制資料列層級權限
運算子:
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
注意
您無法修改檢視定義,以新增或變更檢視中所參考的數據表,並使用相同的串流檢查點。
限制
適用下列限制:
您只能從 Delta 資料表支援的檢視進行串流處理。 不支援針對其他數據源定義的檢視。
您必須向 Unity 目錄註冊檢視。
如果您從包含不受支援運算子的檢視中進行串流處理,就會顯示下列例外狀況:
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.