共用方式為


什麼是 Delta Live Tables?

注意

Delta Live Tables 需要 Premium 計劃。 如需更多資訊,請聯絡您的 Databricks 客戶團隊。

Delta Live Tables 是一種宣告式架構,旨在簡化可靠且可維護的擷取、轉換和載入 (ETL) 管線的建立。 您可以指定要擷取哪些數據,以及如何轉換數據,而 Delta Live Tables 會將管理數據管線的重要層面自動化,包括協調流程、計算管理、監視、數據品質強制執行和錯誤處理。

Delta Live Tables 建置在 Apache Spark 上,但不是使用一系列個別的 Apache Spark 工作來定義您的數據管線,而是定義系統應該建立的串流 tables 和具體化 views,以及填入和 update 這些串流 tables 和具體化 views所需的查詢。

若要深入瞭解使用 Delta Live Tables建置和執行 ETL 管線的優點,請參閱 Delta Live Tables 產品頁面

Delta Live Tables 相較於 Apache Spark 的 優點

Apache Spark 是多功能的開放原始碼整合分析引擎,包括 ETL。 Delta Live Tables 建置在Spark上,以解決特定和常見的ETL處理工作。 Delta Live Tables 可在需求包含下列處理工作時大幅加速您的生產路徑,包括:

  • 從一般來源匯入數據。
  • 逐步轉換數據。
  • 執行異動數據擷取 (CDC)。

不過,Delta Live Tables 不適合實作某些類型的程序邏輯。 例如,無法在定義 Delta Live Tables 資料集的程式代碼內執行處理需求,例如寫入外部 table 或包含在外部檔案記憶體或資料庫 tables 上運作的條件式。 若要實作 Delta Live Tables不支持的處理,Databricks 建議使用 Apache Spark 或在 Databricks 作業中包含管線,以在不同的作業工作中執行處理。 請參閱 Delta Live Tables 管線任務以了解作業

以下 table 會比較 Delta Live Tables 與 Apache Spark:

能力 Delta Live Tables Apache Spark
數據轉換 您可以使用 SQL 或 Python 轉換資料。 您可以使用 SQL、Python、Scala 或 R 來轉換資料。
增量數據處理 許多數據轉換都會以累加方式自動處理。 您必須判斷哪些數據是新的,以便以累加方式處理。
編排 轉換會依正確的順序自動安排並進行。 您必須確定不同的轉換會以正確的順序執行。
排比 所有轉換都會以正確的平行層級執行。 您必須使用線程或外部協調器,以平行方式執行不相關的轉換。
錯誤處理 系統會自動重試失敗。 您必須決定如何處理錯誤和重試。
監測 計量和事件會自動記錄。 您必須撰寫程式代碼來收集執行或資料質量的相關計量。

Delta Live 的重點概念 Tables

下圖顯示 Delta Live Tables 管線的重要元件,後面接著每個元件的說明。

Delta Live Tables 重要概念。

串流 table

串流 table 是一個 Delta table,包含一個或多個寫入的流。 串流 tables 通常用於擷取,因為它們只會處理輸入數據一次,而且可以處理大量僅附加數據 volumes。 串流 tables 也適用於大量數據流的低延遲轉換。

具體化檢視

實體檢視是一種檢視,包含根據定義實體檢視的查詢而預先計算的資料。 根據管線的 update 排程或觸發條件,具體化檢視中的記錄會由 Delta Live Tables 自動保持更新。 每次更新具體化檢視時,保證會有與針對可用最新數據執行定義查詢相同的結果。 不過,這通常不需要從頭重新計算完整結果,而是使用 增量式 refresh。 具備實體化的 views 通常用於資料轉換。

Views

Azure Databricks 中的所有 views 都會在查詢來源數據集時計算結果,並在可用時利用快取優化。 Delta Live Tables 不會將 views 發佈至 catalog,因此 views 只能在它們所定義的管線中參考。 Views 對於不應該公開給用戶或系統的中繼查詢很有用。 Databricks 建議使用 views 來強制執行數據品質條件約束,或轉換和擴充驅動多個下游查詢的數據集。

管道

管線是串流 tables 和具體化 views 的集合,會一起更新。 這些串流 tables 和實體化 views 會在 Python 或 SQL 原始程式檔中宣告。 管線也包含一個組態,定義在管線執行時用來 update 串流 tables 和具體化 views 的計算。 類似於 Terraform 模板在您的雲端帳戶中定義基礎架構,Delta Live * Tables 管線定義了資料處理的資料集與轉換流程。

Delta Live Tables 數據集如何處理數據?

下列 table 說明具現化 views、串流 tables和 views 處理數據的方式:

資料集類型 如何透過已定義的查詢處理記錄?
串流 table 每筆記錄都會只處理一次。 這會假設是僅限附加的來源。
具體化檢視 記錄會視需要進行處理,以傳回目前數據狀態的準確結果。 具體化 views 應該用於數據處理工作,例如轉換、匯總或預先計算速度緩慢的查詢和常用的計算。
檢視 每次查詢檢視時,都會處理記錄。 使用 views 進行中繼轉換和數據品質檢查,而不應發佈至公用數據集。

在 Delta Live Tables 中,宣告您的第一個資料集

Delta Live Tables 引進 Python 和 SQL 的新語法。 若要瞭解管線語法的基本概念,請參閱 使用 Python 開發管線程式代碼和使用 SQL 開發管線程式代碼。

注意

Delta Live Tables 會將數據集定義與 update 處理區隔開,而 Delta Live Tables Notebook 不適用於互動式執行。

如何配置 Delta Live Tables 管線?

Delta Live Tables 管線的設定分為兩大類:

  1. 定義一組筆記本或檔案的組態(稱為 原始程式碼),使用 Delta Live Tables 語法來宣告數據集。
  2. 控制管線基礎架構、相依性管理、更新處理方式,以及如何將 tables 儲存在工作區的組態設定。

大部分的組態都是選擇性的,但有些組態需要謹慎注意,尤其是在設定生產管線時。 其中包括下列各項:

  • 若要在管線外部提供資料,您必須宣告 目標 schema,以發佈至 Hive 中繼存放區或 目標 catalog,並 目標 schema 發佈至 Unity Catalog。
  • 數據訪問許可權是透過用於執行的叢集來設定。 請確定叢集已針對數據源和目標 儲存位置設定適當的許可權,如果指定的話。

如需使用 Python 和 SQL 撰寫管線原始碼的詳細資訊,請參閱 Delta Live Tables SQL 語言參考Delta Live Tables Python 語言參考

如需管線設定和組態的詳細資訊,請參閱 設定 Delta Live Tables 管線

部署您的第一個管線和觸發程式更新

使用 Delta Live Tables處理資料之前,您必須設定管線。 設定管線之後,您可以觸發 update 來計算管線中每個數據集的結果。 若要 get 開始使用 Delta Live Tables 管線,請參閱 教學課程:執行您的第一個 Delta Live Tables 管線

什麼是管線 update?

當您啟動 update時,管線會部署基礎結構並重新計算數據狀態。 update 會執行下列動作:

  • 使用正確的設定啟動叢集。
  • 探索所有已定義的 tables 和 views,並檢查是否有任何分析錯誤,例如無效的 column 名稱、遺漏的相依性和語法錯誤。
  • 使用最新的可用數據,建立或更新 tables 和 views。

視使用案例的成本和延遲需求而定,管線可以持續執行或依排程執行。 請參閱 在 Delta Live Tables 管線上執行 update。

使用 Delta Live 匯入數據 Tables

Delta Live Tables 支援 Azure Databricks 中所有可用的數據源。

Databricks 建議針對大部分的資料擷取使用案例使用串流 tables。 對於抵達雲端物件記憶體的檔案,Databricks 建議自動載入器。 您可以使用 Delta Live Tables 從大多數訊息總線直接匯入數據。

如需設定雲端記憶體存取權的詳細資訊,請參閱 雲端記憶體設定

針對自動載入器不支援的格式,您可以使用 Python 或 SQL 來查詢 Apache Spark 所支援的任何格式。 請參閱 使用 Delta Live 載入資料 Tables

監視及強制執行數據品質

您可以使用 預期 來指定資料集內容的數據品質控制。 與傳統資料庫中的 CHECKconstraint 不同,這樣的資料庫會防止新增未通過 constraint的記錄,而在處理不符合數據品質需求的數據時,使用者的期望可以提供更多的彈性。 這種彈性可讓您處理並儲存預期會混亂的數據,以及必須符合嚴格品質需求的數據。 請參閱 使用 Delta Live 管理數據品質 Tables

Delta Live Tables 擴充 Delta Lake 的功能。 由於 tables 由 Delta Live Tables 建立及管理為 Delta tables,因此它們具有 Delta Lake 所提供的相同保證和功能。 請參閱什麼是 Delta Lake?

Delta Live Tables 在 Delta Lake 中除了支援許多可以 set 的 table 屬性之外,還新增數個 table 屬性。 請參閱 Delta Live Tables 屬性參考Delta table 屬性參考

如何由 Delta Live Tables 建立及管理 tables

Azure Databricks 會自動管理使用 Delta Live Tables建立的 tables,判斷更新需要如何處理,以正確計算 table 的目前狀態,以及執行一些維護和優化工作。

針對大部分作業,您應該允許 Delta Live Tables 處理針對目標 table的所有更新、插入和刪除。 如需詳細數據和限制,請參閱 保留手動刪除或更新

Delta Live Tables 所執行的維護工作

Delta Live Tables 會在 table 更新後的 24 小時內執行維護工作。 維護可以藉由移除舊版的 tables來改善查詢效能並降低成本。 根據預設,系統會先執行完整的 OPTIMIZE 作業,然後接著 VACUUM。 您可以在 table的 table 屬性 中設定 pipelines.autoOptimize.managed = false,以停用 table 的 OPTIMIZE。 只有當管線 update 在維護工作排程前的 24 小時內執行時,維護工作才會被執行。

限制

關於 list 限制,請參閱 Delta Live Tables 限制

如需了解搭配 Unity Catalog使用 Delta Live Tables 的特定需求和限制 list,請參閱 如何在 Delta Live Tables 管線 中使用 Unity Catalog。

其他資源