Delta Lake是DataBricks公司推出的一種資料湖方案。Delta Lake以資料為中心,圍繞資料流走向(資料從流入資料湖、資料群組織管理和資料查詢到流出資料湖)推出了一系列功能特性,協助您搭配第三方上下遊工具,搭建快捷、易用和安全的資料湖。
背景資訊
通常的資料湖方案是選取巨量資料儲存引擎構建資料湖(例如,阿里雲Object Storage Service產品或雲下HDFS),然後將產生的各種類型資料存放區在該儲存引擎中。在使用資料時,通過Spark或Presto對接資料分析引擎並進行資料解析。但該套方案存在如下問題:
- 資料匯入可能會失敗,失敗後清理髒資料和恢複作業困難。
- 方案中沒有ETL(Extract Transform Load)過程,缺少必要的資料品質監管。
- 方案中沒有事務將讀和寫隔離,致使流式和批式讀寫無法相互隔離。
Delta資料湖方案如下:
- 在巨量資料儲存層之上提供了資料管理層,該資料管理層等同於資料庫中的中繼資料管理,其中繼資料隨著資料一起存放並對使用者可見(例如資料倉儲與資料湖所示)。
- Delta基於中繼資料管理引入了ACID,解決了因資料匯入失敗而產生髒資料和資料匯入時的讀寫隔離問題。
- 中繼資料存放區了資料的欄位資訊,Delta提供了資料匯入時資料校正功能,保證資料品質。
- 事務功能使得批式讀寫和流式讀寫能夠互相隔離。
說明 ACID指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。
Data Warehouse、Data Lake和Delta Lake對比如下所示。
對比項 | Data Warehouse | Data Lake | Delta Lake |
架構 | 計算儲存一體或分離 | 計算儲存分離 | 計算儲存分離 |
儲存管理 | 嚴格、非通用 | 原生格式 | 通用格式、輕量級 |
情境 | 報表、分析 | 報表、分析、資料科學 | 報表、分析、資料科學 |
靈活性 | 低 | 高 | 較高 |
資料品質和可靠性 | 很高 | 低 | 較高 |
事務性 | 支援 | 不支援 | 支援 |
效能 | 高 | 低 | 較高 |
擴充性 | 依賴於具體實現 | 高 | 高 |
面向人員 | 管理員 | 管理員、資料科學家 | 管理員、資料科學家 |
成本 | 高 | 低 | 低 |
適用情境
Delta適用於雲上資料湖資料管理解決方案。如果您存在以下情境,可以使用Delta:
- 即時查詢:資料即時從上遊流入Delta,查詢側即可查詢該資料,例如,在CDC情境下,Spark Streaming即時消費binlog時,使用Delta merge功能,即時將上遊的資料通過merge更新到Delta Lake,然後可以使用Hive、Spark或Presto即時查詢。同時,由於支援ACID,保證了資料的流入和查詢的隔離性,不會產生髒讀資料。
- 刪除或更新,GDPR(General Data Protection Regulation):通常資料湖方案不支援資料的刪除或更新。如果需要刪除或更新資料,則需要把未經處理資料清理掉,然後把更新後的資料寫入儲存。而Delta支援資料的刪除或更新。
- 資料即時同步,CDC(Change Data Capture):使用Delta merge功能,啟動流作業,即時將上遊的資料通過merge更新到Delta Lake。
- 資料品質控制:藉助於Delta Schema校正功能,在資料匯入時剔除異常資料,或者對異常資料做進一步處理。
- 資料演化:資料的Schema並非固定不變,Delta支援通過API 方式改變資料的Schema。
- 即時機器學習:在機器學習情境中,通常需要花費大量的時間用於處理資料,例如資料清洗、轉換、提取特徵等等。同時,您還需要對歷史和即時資料分別處理。而Delta簡化了工作流程,整條資料處理過程是一條完整的、可靠的即時資料流,其資料的清洗、轉換、特徵化等操作都是流上的節點動作,無需對歷史和即時資料分別處理。
與開源Delta Lake對比
EMR-Delta Lake豐富了開源Delta Lake的特性,例如對SQL和Optimize的支援等。下表列出了Delta Lake的基本特性,並對比EMR-Delta Lake與開源Delta Lake(0.6.1)。
特性 | EMR-Delta | 開源Delta |
SQL |
|
|
API |
|
|
Hive connector | 支援 | 支援 |
Presto connector | 支援 | 支援 |
Parquet | 支援 | 支援 |
ORC | 不支援 | 不支援 |
文字格式設定 | 不支援 | 不支援 |
Data Skipping | 支援 | 不支援 |
ZOrder | 支援 | 不支援 |
Native DeltaLog | 支援 | 不支援 |