LakeSoul 是一个云原生湖仓框架,支持可扩展的元数据管理、ACID 事务、高效灵活的 upsert 操作、模式演化以及统一的流处理和批处理。
LakeSoul 支持多种计算引擎读写湖仓表数据,包括 Spark、Flink、Presto 和 PyTorch,并支持批处理、流处理、MPP 和 AI 等多种计算模式。LakeSoul 支持 HDFS 和 S3 等存储系统。
LakeSoul 最初由 DMetaSoul 公司创建,并于 2023 年 5 月捐赠给 Linux Foundation AI & Data 作为沙盒项目。
LakeSoul 实现了行级和列级的增量 upsert,并允许并发更新。
LakeSoul 使用类似 LSM-Tree 的结构来支持带主键的哈希分区表的更新,并在提供优化的读时合并性能的同时实现了非常高的写入吞吐量(参考性能基准测试)。LakeSoul 通过使用 PostgreSQL 来扩展元数据管理并实现 ACID 控制。
LakeSoul 使用 Rust 实现本机元数据层和 IO 层,并提供 C/Java/Python 接口以支持连接大数据和 AI 等多个计算框架。
LakeSoul 支持并发批处理或流式读写。读写都支持 CDC 语义,再加上自动模式演化和精确一次保证,使得构建实时数据仓库变得容易。
LakeSoul 支持多工作空间和 RBAC。LakeSoul 使用 Postgres 的 RBAC 和行级安全策略来实现元数据的权限隔离。结合 Hadoop 用户和组,可以实现物理数据隔离。LakeSoul 的权限隔离对 SQL/Java/Python 作业有效。
LakeSoul 支持自动分离式合并、自动表生命周期维护和自动冗余数据清理,降低运营成本并提高可用性。
更详细的功能请参考我们的文档页面:文档
快速开始
按照快速开始快速设置测试环境。
教程
请在文档网站中查找教程:
- 查看 LakeSoul 上的 Python 数据处理和 AI 模型训练示例,了解 LakeSoul 如何将 AI 连接到湖仓,构建统一的现代数据基础设施。
- 查看 LakeSoul Flink CDC 整库同步教程,了解如何实时将整个 MySQL 数据库同步到 LakeSoul,包括自动创建表、自动 DDL 同步和精确一次保证。
- 查看 Flink SQL 使用,了解如何在批处理和流处理模式下使用 Flink SQL 读写 LakeSoul,支持 Flink Changelog Stream 语义以及行级 upsert 和删除。
- 查看多流合并和构建宽表教程,了解如何在不使用 join 的情况下并发合并具有相同主键(和不同其他列)的多个流。
- 查看 Upsert 数据和合并 UDF 教程,了解如何 upsert 数据和使用合并 UDF 自定义合并逻辑。
- 查看快照 API 使用,了解如何进行快照读取(时间旅行)、快照回滚和清理。
- 查看增量查询教程,了解如何在 Spark 中以批处理或流处理模式进行增量查询。
使用文档
请在文档网站中查找使用文档: 使用文档
功能路线图
- 数据科学和 AI
- 原生 Python 读取器(无需 PySpark)
- PyTorch 数据集和分布式训练
- 元数据管理(#23)
- 多级分区:多个范围分区和最多一个哈希分区
- 自动冲突解决的并发写入
- 具有读隔离的 MVCC
- 通过 Postgres 事务进行写事务(两阶段提交)
- 模式演化:支持列的添加/删除
- 表操作
- 哈希分区表的 LSM-Tree 风格 upsert
- 带 upsert delta 文件的哈希分区读时合并
- 非哈希分区表的写时复制更新
- 自动分离式合并服务
- 数据仓库
- Spark 集成
- Table/DataFrame API
- 除 upsert 外的 SQL 支持与目录
- 查询优化
- 主键操作的 Shuffle/Join 消除
- 合并 UDF(合并操作符)
- Merge Into SQL 支持
- 主键匹配的 Merge Into SQL(读时合并)
- 非主键匹配的 Merge Into SQL
- 带匹配条件和复杂表达式的 Merge Into SQL(主键匹配时读时合并)(依赖于 #66)
- Flink 集成和 CDC 摄入(#57)
- Table API
- 批处理/流处理接收器
- 批处理/流处理源
- 变更日志流语义的流处理源/接收器
- 精确一次源和接收器
- Flink CDC
- 自动模式变更(DDL)同步
- 自动表创建(依赖于 #78)
- 支持接收多个具有不同模式的源表(#84)
- Table API
- Hive 集成
- 合并后导出到 Hive 分区
- Apache Kyuubi(Hive JDBC)集成
- 实时数据仓库
- CDC 摄入
- 时间旅行(快照读取)
- 快照回滚
- 自动全局合并服务
- MPP 引擎集成(依赖于 #66)
- Presto
- Trino
- 云和原生 IO(#66)
- 对象存储 IO 优化
- 原生读时合并
- 多层存储类支持与数据分层
社区准则
反馈和贡献
如果您有任何问题,请随时创建问题或讨论。
加入我们的 Discord 服务器进行讨论。
联系我们
通过电子邮件联系我们:lakesoul-technical-discuss@lists.lfaidata.foundation。
开源许可
LakeSoul 在 Apache License v2.0 下开源。