DeltaLake

更新时间:
复制 MD 格式

Delta Lake是DataBricks公司推出的一种数据湖方案。Delta Lake以数据为中心,围绕数据流走向(数据从流入数据湖、数据组织管理和数据查询到流出数据湖)推出了一系列功能特性,协助您搭配第三方上下游工具,搭建快捷、易用和安全的数据湖。

背景信息

通常的数据湖方案是选取大数据存储引擎构建数据湖(例如,阿里云对象存储OSS产品或云下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

支持

不支持