DeltaLake数据湖解决方案

Delta Lake 是DataBricks公司推出的一种数据湖解决方案,Delta为该方案的核心组件。围绕数据流走向(数据入湖从流入数据湖、数据组织管理、数据查询到流出数据湖)推出了一系列功能特性,

协助您搭配第三方上下游工具,搭建快捷、易用、和安全的数据湖。

通常的数据湖方案是选取大数据存储引擎构建数据湖(例如阿里云OSS等对象产品或云下hdfs),然后将产生的各种类型数据存储在该存储引擎中。在使用数据时,通过Spark或Presto

对接数据分析引擎并进行数据解析。

应用场景:优点

Delta适用于云上数据湖数据管理解决方案,以下场景可以使用Delta:

1、实时查询:数据实时从上游流入Delta,查询侧即可查询该数据。同时,由于支持ACID功能,保证了数据流入和查询的隔离性,不会产生脏数据。

2、删除或更新,通常数据湖方案不支持数据的删除或更新。如果需要删除或更新数据,则需要把原始数据清理掉,然后把更新后的数据写入存储。而Delta支持数据的删除或更新。

3、数据实时同步,CDC(change data capture):使用Delta merge功能,启动流作业,实时将上游的数据通过merge更新到Delta Lake中。

4、数据质量控制:借助于Delta Schema校验功能,在数据导入时剔除异常数据,或者对异常数据做进一步处理。

5、数据演化:数据的schema并非固定不变,Delta 支持通过API方式改变数据的Schema。

6、实时机器学习

delta lake目前的不足:

1、更新操作很重,更新一条数据和更新一批数据的成本可能是一样的,所以不适合一条条的更新数据

2、更新数据的方式是新增文件,会造成文件数量过多,需要清理历史版本的数据,version最好不要保存太多、

3、乐观锁在多用户同时更新时并发能力较差,更适合写少读多的场景

数据湖delta lake的最佳调优详解

https://my.oschina.net/u/4590259/blog/4474138

1、选择最佳恰当的分区列

对于delta表建议指定分区列。企业中最常见的分区列就是date,地域这些。

2、合并文件

如果是不断将数据写入Delta表,随着时间的推移,会产生大量文件,尤其是如果小数据量的添加数据时。这个可能会大大降低表的查询速率,也可能影响文件系统的性能。

理想情况下,应定期将大量的小文件重写为少量较大的文件。

3、merge操作的性能调优

a、减少匹配查找的数据量

默认情况下,merge操作会扫描整个delta lake表找到满足条件的数据。可以加些谓词,以减少数据量。

b、合并文件

如果数据存储的时候有很多小文件,就会降低数据的读取速度。可以合并小文件成一些大文件,来提升读取的速度。后面会说到这个问题。

 c、控制shuffle的分区数

为了计算和更新数据,merge操作会对数据进行多次shuffle。shuffle过程中task数量是由参数spark.sql.shuffle.partitions来设置,默认是200。该参数不仅能控制shuffle的并行度,也能决定输出的文件数。增加这个值虽然可以增加并行度,但也相应的增加了产生小文件数。

原文地址:https://www.cnblogs.com/ssqq5200936/p/14874787.html