共用方式為


什麼是 Delta Live Tables?

注意

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

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

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

若要深入瞭解使用 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 數據集的程式代碼內執行。 若要實現 Delta Live Tables 不支持的處理,Databricks 建議使用 Apache Spark,或在 Databricks 作業中包含管線,以在單獨的作業任務中執行處理。 如需作業的詳細資訊,請參閱 Delta Live Tables 管線任務。

下表比較 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 的重要概念。

串流數據表

串流數據表是一個 Delta 數據表,其中包含一或多個寫入它的數據流。 串流表通常用於引入,因為它們只會處理一次輸入數據,而且可以處理大量只能新增的資料。 串流數據表也適用於大量數據流的低延遲轉換。

具體化檢視

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

觀看次數

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

管道

管線是串流數據表和具體化檢視的集合,這些檢視會一起更新。 這些串流數據表和具體化檢視會在 Python 或 SQL 原始程式檔中宣告。 管線還包含設定,定義在管線執行時用來更新串流表格和實現視圖的計算資源。 類似於 Terraform 範本如何定義雲端帳戶中的基礎結構,Delta Live Tables 管線會定義數據處理的數據集和轉換。

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

下表描述具體化檢視、串流數據表和檢視表處理數據的方式:

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

在 Delta Live Tables 中定義您的第一個資料集

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

注意

Delta Live Tables 會分隔數據集定義與更新處理,而 Delta Live Tables 筆記本不適用於互動式執行。

如何設定 Delta Live Tables 管線?

Delta Live Tables 管線的配置分為兩大類別:

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

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

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

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

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

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

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

什麼是管線更新?

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

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

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

使用 Delta 即時數據表 匯入數據

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

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

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

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

監視及強制執行數據品質

您可以使用 預期 來指定資料集內容的數據品質控制。 與傳統資料庫中的 CHECK 條件約束不同,其防止新增不符合條件的記錄,期待機制在處理不符合數據品質要求的情況時提供更大的彈性。 這種彈性可讓您處理並儲存預期會混亂的數據,以及必須符合嚴格品質需求的數據。 請參閱 管道預期以管理資料品質

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

Delta Live Tables 除了可以在 Delta Lake 中設定的許多數據表屬性之外,也會新增數個數據表屬性。 請參閱 Delta Live Tables 屬性參考,以及 Delta 表格屬性參考

如何透過 Delta Live Tables 建立及管理資料表

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

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

Delta Live Tables 所執行的維護工作

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

限制

如需限制清單,請參閱 Delta Live Tables 限制

如需搭配 Unity 目錄使用 Delta Live Tables 的特定需求和限制清單,請參閱 搭配您的 Delta Live Tables 管線使用 Unity 目錄

其他資源