Apache Paimon(incubating)是一个流式数据湖平台,支持高速数据摄取、变更数据跟踪和高效的实时分析。
读取/写入:Paimon 支持多种方式读取/写入数据并执行 OLAP 查询。
对于读取操作,支持三种方式消费数据:
来自历史快照(批量模式)
来自最新偏移量(流式传输模式)
以混合方式读取增量快照
对于写入操作,支持从数据库的更改日志(CDC)流式同步或从离线数据批量插入/覆盖。
生态系统:除了 Apache Flink,Paimon 还支持其他计算引擎(如 Apache Hive、Apache Spark 和 Trino)进行读取。
内部:在内部,Paimon 将列文件存储在文件系统/对象存储上,并使用 LSM 树结构来支持大量数据更新和高性能查询。
对于像Apache Flink这样的流式引擎,通常有三种类型的连接器:
消息队列,如Apache Kafka,它在这个管道的源和中间阶段都被使用,以保证延迟在秒级内。
OLAP系统,如ClickHouse,它以流式方式接收处理后的数据,并为用户的即席查询提供服务。
批量存储,如Apache Hive,它支持传统批量处理的各种操作,包括INSERT OVERWRITE
。
Paimon提供了表格抽象。它的使用方式与传统数据库没有区别:
在批处理
执行模式下,它就像一个Hive表,并支持批处理SQL的各种操作。查询它以查看最新快照。
在流式
执行模式下,它就像一个消息队列。查询它就像从消息队列中查询一个流式变更日志,其中历史数据永不过期。
Primary Key表 (主键表)
创建表时,默认的表格类型是changelog表 (Primary Key表)。用户可以在表中插入、更新或删除记录。
主键由一组列组成,每个记录包含唯一的值。Paimon 通过在每个存储桶中对主键进行排序来强制数据排序,允许用户通过对主键应用过滤条件来实现高性能。
Append Only表 (非主键表)
如果一个表没有定义主键,那么它默认是一个Append Only表。根据桶的定义,我们有两种不同的只追加模式:“用于可扩展表的追加”和“用于队列的追加”。
您只能将完整的记录插入到表中。不支持删除或更新,也不能定义主键。这种类型的表适用于不需要更新的用例(例如日志数据同步)。
在创建表时,指定'bucket'='-1' 且不指定主键即可创建Append Only表,如:
CREATE TABLE MyTable ( product_id BIGINT, price DOUBLE, sales BIGINT ) WITH ('bucket' = '-1');