全部產品
Search
文件中心

E-MapReduce:Delta Lake概述

更新時間:Jul 01, 2024

Delta Lake是DataBricks公司推出的一種資料湖方案。Delta Lake以資料為中心,圍繞資料流走向(資料從流入資料湖、資料群組織管理和資料查詢到流出資料湖)推出了一系列功能特性,協助您搭配第三方上下遊工具,搭建快捷、易用和安全的資料湖。

背景資訊

通常的資料湖方案是選取巨量資料儲存引擎構建資料湖(例如,阿里雲Object Storage Service產品或雲下HDFS),然後將產生的各種類型資料存放區在該儲存引擎中。在使用資料時,通過Spark或Presto對接資料分析引擎並進行資料解析。但該套方案存在如下問題:
  • 資料匯入可能會失敗,失敗後清理髒資料和恢複作業困難。
  • 方案中沒有ETL(Extract Transform Load)過程,缺少必要的資料品質監管。
  • 方案中沒有事務將讀和寫隔離,致使流式和批式讀寫無法相互隔離。
Delta資料湖方案如下:
  • 在巨量資料儲存層之上提供了資料管理層,該資料管理層等同於資料庫中的中繼資料管理,其中繼資料隨著資料一起存放並對使用者可見(例如資料倉儲與資料湖所示)。
  • Delta基於中繼資料管理引入了ACID,解決了因資料匯入失敗而產生髒資料和資料匯入時的讀寫隔離問題。
  • 中繼資料存放區了資料的欄位資訊,Delta提供了資料匯入時資料校正功能,保證資料品質。
  • 事務功能使得批式讀寫和流式讀寫能夠互相隔離。
說明 ACID指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。
圖 1. 資料倉儲與資料湖delta_data
Data Warehouse、Data Lake和Delta Lake對比如下所示。
對比項Data WarehouseData LakeDelta 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
  • ALTER
  • CONVERT
  • CREATE
  • CTAS
  • DELETE
  • DESC HISTORY
  • INSERT
  • MERGE
  • OPTIMIZE
  • UPDATE
  • VACUUM
  • SAVEPOINT
  • ROLLBACK
  • CREATE
    說明 建表示例:CREATE TABLE <tbl> USING delta LOCATION <delta_table_path>
    • 僅支援基於已有的Delta目錄建表。
    • 建表時請不要指定Schema。
  • CONVERT
  • DESC HISTORY
  • VACUUM
API
  • batch read/write
  • streaming read/write
  • optimize
  • delete
  • update
  • merge
  • convert
  • history
  • vacuum
  • savepoint
  • rollback
  • batch read/write
  • streaming read/write
  • delete
  • update
  • merge
  • convert
  • history
  • vacuum
Hive connector支援支援
Presto connector支援支援
Parquet支援支援
ORC不支援不支援
文字格式設定不支援不支援
Data Skipping支援不支援
ZOrder支援不支援
Native DeltaLog支援不支援