2 DataLake — 批流一体化的追风者( 二 )


2.3 可扩展元数据处理
Delta Lake将表或目录的元数据信息存储在事务日志中 , 而不是 中 。这允许Delta Lake在恒定时间内列出大型目录中的文件 , 同时在读取数据时非常高效 。这里是数据湖产品的一个特点 , 即和hive的元数据存储MySQL数据库的单点存在一定的差异性 , 通过分布式文件系统可以有效避免元数据单点过热 , 并且能够保证性能 。
2.4 数据版本
Delta Lake允许用户读取表或目录之前的快照 。当文件被修改文件时 , Delta Lake会创建较新版本的文件并保留旧版本的文件 。当用户想要读取旧版本的表或目录时 , 他们可以在Spark的读取API中提供时间戳或版本号 , Delta Lake会根据事务日志中的信息构建该时间戳或版本的完整快照 。这允许用户重现之前的数据 , 并在需要时将表还原为旧版本的数据 。所以这里是可以通过Delta来实现对于历史存量数据的回溯以及消费处理 。
2.5 统一流和批处理 Sink
除批量写入外 , Delta Lake还可用作 Spark、的高效流式sink来实现写入 。结合ACID事务和可扩展的元数据处理 , 高效的流式sink现在可以实现大量近实时分析用例 , 而无需同时维护复杂的流式传输和批处理管道 。对于统一流批计算 , 维护一套开发逻辑会是一个很好的ieda , 整合流批计算 , 首先要去能够支持对流批的引擎 , 这里spark可以通过一套SQL语义来实现 , 其次则是对于写入引擎的支持 , 包含了dml的更新等merge操作 , 这里也是hive所不支持的 , 因此说数据湖能整合流批的写入 , 这个特性起到了很大的作用;接着呢 , 我们在查询上要可以按照快照和过程态数据两种方式进行查询 , 也是对于两者融合的一大体现 。
2.6 数据存储格式采用开源格式
Delta Lake中的所有数据都是使用格式存储 , 使Delta Lake 能够利用原生的高效压缩和编码方案 。这个特性大部分的数据湖产品都会使用开源的存储模式 , 包括、avro、orc等等 , 这里也是需要去和目前的文件格式进行统一的 , 没必要重复造轮子 , 复用即是最好的诠释 。
2.7 记录更新和删除
这个功能马上可以使用 。Delta Lake 将支持 merge,和等 DML 命令 。这使得数据工程师可以轻松地在数据湖中插入/更新和删除记录 。由于 Delta Lake 以文件级粒度跟踪和修改数据 , 因此它比读取和覆盖整个分区或表更有效 。
2.8 数据异常处理
Delta Lake还将支持新的 API 来设置表或目录的数据异常 。工程师能够设置一个布尔条件并调整报警阈值以处理数据异常 。当Spark 作业写入表或目录时 , Delta Lake 将自动验证记录 , 当数据存在异常时 , 它将根据提供的设置来处理记录 。
100% 兼容Spark API
3.Delta Lake几个新特性
提前说明 , 开源版本不一定完全都有 , 所以你懂得 , 我们接着看看具体的实现 。
3.1 Time
这个特性可以让用户查询给定时间点的快照或回滚错误更新到之前正确的数据 。
,和 MERGE操作:这些操作可有效地重写相关对象 , 以实现对存档数据和法规遵从性工作流的更新;这个和多版本是密不可分的 , 有了多版本的支持才会有对于各个快照的处理的可能 。
3.2 高效的流 IO
通过让流作业以低延迟的形式将小对象写入表中 , 然后以事务形式将它们合并到较大的对象中以提高查询性能 。这个也即是所谓的copy on write , 它的操作即是使用这个功能来实现的 。