全部產品
Search
文件中心

E-MapReduce:DeltaLake

更新時間:Mar 13, 2025

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 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

  • 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

支援

不支援