本文属于【Azure 架构师学习笔记】系列。
本文属于【Azure Databricks】系列。
接上文 【Azure 架构师学习笔记】- Azure Databricks (16) – Delta Lake 和 ADLS整合
前言
前面介绍了Delta Table,但是Databricks又推出了“Delta Live Tables(DLTs)”这两者名字太像了以至于很容易混淆。
Delta Table是一个存储数据到表里面的方式。而DLTs可以用于通过声明式定义来描述在这些表之间的数据流。
也就是说DLTs是一个通过创建和保持数据更新用于管理很多delta table的声明式框架。
Delta Table:数据格式。
Delta Live Tables:数据管道框架(data pipeline framework)
DLTs的好处
Pipeline 可视化
DLTs 使用有向无环图战士所有数据PL(pipeline)的负载,对于非常复杂的PL而言非常有用。同时还可以看到数据是如何从bronze流到最终的gold层。在UC里面也可以通过data lineage(数据学院)来实现,但是对于那些还没有启用UC 的项目而言这是一个替代方案。
CDC 和性能优化
当你的PL 有大量的增删改操作时,CDC能够非常明显地提升速度,特别是对于SCD Type1 到Type2,也就是在lakehouse中,可以保留数据的历史。同时通过默认的delta 格式自动压缩从而极大地提高性能。这种自动压缩式通过把小文件合并来减少parquet对小文件处理性能差的问题。
易用
由于图形化界面使得debug的时候相比于使用Python等语言更加容易实现。
ACID
DTLs搭建在Delta table之上,使用Delta格式,前文已经提及过,Delta table具有ACID特性能够保证数据的一致性和数据质量。所以DLT自然也具有ACID 。
DLTs的注意事项
这里称为注意事项而不是缺点,因为也许它们并不是真正的不好的东西,而是需要评估是否有问题,或者只是一种当前的技术限制。
- 数据体量:虽然lakehouse可以处理大体量的数据,但是集群一旦要处理很大量的数据,对单个集群来说是一个负担,哪怕你的集群不停增加节点, 成本也会很高。(建议:对数据源进行预处理,如分区,拆分批处理,使得每个批处理相对较小)
- 外部系统的集成: DLT的设计中间在于批处理数据集成,对于流式计算通常需要额外的基础架构如Kafka等。
- 版本控制和回滚:虽然Delta有time travl能力,但是真要回滚的时候,从状态管理和部分回滚方面,都并不是简单的事。
DLTs和Delta Tables 对比
小结
简单来说,DLT不是简单的“table”,而是一个ETL 过程。接下来的几篇将会演示一些使用。