在前面我们大致的介绍了数据湖,并且列举了几个比较常用的数据湖解决方案。这篇文章我们介绍下当下比较流行的数据湖解决方案之一Delta Lake。
先来看看Delta Lake的整体架构:
Delta Lake是Spark的第一批开发工程师提供的数据湖解决方案,大致的我们可以把他看作是一个开源存储中间层,他的存储主要是依赖本地文件、Hdfs、Amazing S3,Microsoft Azure Storage,Google Cloud Storage,Oracle Cloud Infrastructure,IBM Cloud Object Storage等,基于以上的存储我们选择其中一个即可。Delta Lake在对象存储上存储批和流数据,以及用于表结构和模式实施的Delta元数据。将数据放入湖中使使用Delta ACID API完成的,从数据湖中取出数据则是使用Delta JDBC连接器完成的,使用Delta数据不能被其他Sql查询引擎查询,他只支持spark和presto。
Delta Lake 提供了 ACID 事务、快照隔离、数据版本控制和回滚,以及模式强制,以更好地处理模式更改和数据类型更改。在 Delta Lake 表上进行的所有事务都直接存储到磁盘。
Delta Lake 支持两个隔离级别:Serializable 和 WriteSerializable。WriteSerializable 比快照隔离更强大,它提供了可用性和性能的最佳组合,并且是默认设置。最强级别的 Serializable 隔离确保串行序列与表的历史记录完全匹配。
Delta Lake 的核心是事务日志,这是一个中央存储库,用于跟踪用户所做的所有更改,它保证了客户端启动的事务的原子性、一致性、隔离性和持久性。它以 JSON 文件的形式记录每一个更改,并按照更改的顺序进行记录。如果有人做了更改,但是删除了它,仍然会有一个记录来简化审计。它作为真实的单一来源,使用户能够访问 Delta Table 状态的最后一个版本。它提供了序列化能力,这是隔离级别的最强级别。
根据上面的介绍可能还是比较抽象,在接下来的文章里面,我们详细的介绍下delta如何使用,这样子会比较清晰一些。
还没有评论,来说两句吧...