用于大数据的存储层 Delta Lake

用于大数据的存储层 Delta Lake

Apache-2.0
Scala SHELL 查看源码»
跨平台
2019-04-26
局长

Delta Lake 是一个存储层,为 Apache Spark 和大数据 workloads 提供 ACID 事务能力,其通过写和快照隔离之间的乐观并发控制(optimistic concurrency control),在写入数据期间提供一致性的读取,从而为构建在 HDFS 和云存储上的数据湖(data lakes)带来可靠性。

Delta Lake 还提供内置数据版本控制,以便轻松回滚。

主要功能特性

支持 ACID 事务

Delta Lake 在多并发写入之间提供 ACID 事务保证。每次写入都是一个事务,并且在事务日志中记录了写入的序列顺序。事务日志跟踪文件级别的写入并使用乐观并发控制,这非常适合数据湖,因为多次写入/修改相同的文件很少发生。在存在冲突的情况下,Delta Lake 会抛出并发修改异常以便用户能够处理它们并重试其作业。Delta Lake 还提供强大的可序列化隔离级别,允许工程师持续写入目录或表,并允许消费者继续从同一目录或表中读取。读者将看到阅读开始时存在的最新快照。

模式管理(Schema management)

Delta Lake 自动验证正在被写的 DataFrame 模式是否与表的模式兼容。表中存在但不在 DataFrame 中的列设置为 null。如果 DataFrame 有表中不存在的列,则此操作会引发异常。Delta Lake 具有显式添加新列的 DDL 以及自动更新模式的能力。

可扩展元数据处理

Delta Lake 将表或目录的元数据信息存储在事务日志中,而不是 Metastore 中。这允许 Delta Lake 在恒定时间内列出大型目录中的文件,同时在读取数据时非常高效。

数据版本

Delta Lake 允许用户读取表或目录之前的快照。当文件被修改文件时,Delta Lake 会创建较新版本的文件并保留旧版本的文件。当用户想要读取旧版本的表或目录时,他们可以在 Apache Spark 的读取 API 中提供时间戳或版本号,Delta Lake 根据事务日志中的信息构建该时间戳或版本的完整快照。这允许用户重现之前的数据,并在需要时将表还原为旧版本的数据。

统一流和批处理 Sink

除批量写入外,Delta Lake 还可用作 Apache Spark structured streaming 的高效流式 sink。结合 ACID 事务和可扩展的元数据处理,高效的流式 sink 现在可以实现大量近实时分析用例,而无需同时维护复杂的流式传输和批处理管道。

数据存储格式采用开源的

Delta Lake 中的所有数据都是使用 Apache Parquet 格式存储,使 Delta Lake 能够利用 Parquet 原生的高效压缩和编码方案。

记录更新和删除

这个功能马上可以使用。Delta Lake 将支持 merge, update 和 delete 等 DML 命令。这使得数据工程师可以轻松地在数据湖中插入/更新和删除记录。 由于 Delta Lake 以文件级粒度跟踪和修改数据,因此它比读取和覆盖整个分区或表更有效。

数据异常处理

Delta Lake 还将支持新的 API 来设置表或目录的数据异常。工程师能够设置一个布尔条件并调整报警阈值以处理数据异常。当 Apache Spark 作业写入表或目录时,Delta Lake 将自动验证记录,当数据存在异常时,它将根据提供的设置来处理记录。

100% 兼容 Apache Spark API

这点非常重要。开发人员可以将 Delta Lake 与他们现有的数据管道一起使用,仅需要做一些细微的修改。比如我们之前将处理结果保存成 Parquet 文件,如果想使用 Delta Lake 仅仅需要做如下修改:

参考:过往记忆大数据

的码云指数为
超过 的项目
加载中

评论(2)

ocean_zhc
ocean_zhc
同问
Beyonds
Beyonds
有人来科普下么

Delta Lake 0.3.0 发布,大型数据集上的 DML

Delta Lake 是一个存储层,为 Apache Spark 和大数据 workloads 提供 ACID 事务能力。Delta Lake 0.3.0 发布,支持多个语句,以便于更新和删除DeltaLake 表中的数据,具体如下: 从表中删除数...

08/04 07:21

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

Apache Spark Delta Lake 写数据使用及实现原理代码解析

Apache Spark Delta Lake 写数据使用及实现原理代码解析 Delta Lake 写数据是其最基本的功能,而且其使用和现有的 Spark 写 Parquet 文件基本一致,在介绍 Delta Lake 实现原理之前先来看看如...

09/27 10:06
19
0
深入剖析 Delta Lake:详解事务日志

事务日志(Transaction log)是理解 Delta Lake 的一个关键点,很多 Delta Lake 的重要特性都是基于事务日志实现的,包括 ACID 事务性、可扩展元数据处理、时间回溯等等。本文将探讨什么是事...

09/17 10:40
21
0
数据湖正在成为新的数据仓库

编译:诚历,阿里巴巴计算平台事业部 EMR 技术专家,Apache Sentry PMC,Apache Commons Committer,目前从事开源大数据存储和优化方面的工作。 像公有云数据湖和 Delta Lake 这样的平台指出...

07/09 11:36
42
0
数据湖正在成为新的数据仓库

像公有云数据湖和 Delta Lake 这样的平台指出了一个中央数据枢纽的趋势,用来支持决策和AI驱动的自动化决策。 数据仓库是否再次加入这股浪潮呢,或者会逐渐消亡? 如果你不清楚这个问题的答案...

07/09 10:42
8
0
阿里云重磅推出Serverless数据分析引擎-Data Lake Analytics

摘要: 近日,阿里云重磅推出Serverless数据分析引擎-Data Lake Analytics,Data Lake Analytics,帮助更多不具备分析能力的存储服务,赋予其分析的能力。 近日,阿里云重磅推出Serverless数...

2018/07/09 16:06
77
0
street quite simply

Hoan Kiem Lake is located in center of Hanoi Previous Town, in the past known as Environment friendly Lake. Surrounded by trees in addition to green color trail, often the lake ...

2016/12/01 13:50
5
0
Python 日期区间处理(本周本月上周上月...)

工具类 class CalendarUtils: """ 日期工具类 """ @staticmethod def delta_day(delta=0): """ :param delta: 偏移量 :return: 0今天, 1昨天, 2前天, -......

06/26 11:06
76
0
iostat输出详解

对于查看当前磁盘性能经常会使用的一个命令

2015/05/19 10:52
174
0
注册中心 Eureka 源码解析 —— 应用实例注册发现(七)之增量获取

摘要: 原创出处 http://www.iocoder.cn/Eureka/instance-registry-fetch-delta/ 「芋道源码」欢迎转载,保留摘要,谢谢! **本文主要基于 Eureka 1.8.X 版本** - [1. 概述](http://www.ioco...

2018/06/09 11:11
52
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部