昨日,Apache Paimon 0.5.0-incubating 版本正式发布。这个版本是在近 100 位贡献者的共同努力下完成的,共提交了 500 多次代码改进,为社区带来了许多令人兴奋的新功能和改进。

其中的亮点之一是 CDC(Change Data Capture)数据入湖的功能已经成熟。在 0.5 版本中,引入了标签的概念,为离线数据仓库提供了不可变视图。此外,主键表的动态桶模式也已经投入生产,并引入了仅追加模式可扩展表来取代 Hive 表。

Paimon 支持多种方式将数据导入 Paimon 表,并且支持模式演化。在 0.5 版本中,新增了许多新功能,例如 MySQL 同步表和数据库、Kafka 同步表和数据库以及 MongoDB 同步集合和数据库。

主键表可以通过在创建表的 DDL(数据定义语言)中指定主键来创建,它接受插入、更新或删除记录操作。而动态桶(Dynamic Bucket)模式是通过将 'bucket' 参数设置为 '-1' 来实现的,Paimon 可以动态维护索引并自动扩展桶的数量。用户可以通过控制目标行数和分配器操作符的并行度来优化动态桶的性能。

针对部分更新表在多流更新时的无序问题,引入了序列组(Sequence Group)机制,每个数据流都可以定义自己的序列分组,实现真正的部分更新。

为了提升查询性能,新增了首行(first-row)合并引擎,用户可以保留相同主键的第一行数据。此外,还引入了 Lookup Changelog-Producer 来大大减少需要生成更改日志的表的延迟。

针对压缩的需求,Paimon 支持异步压缩,用户可以慢慢地进行压缩而不会阻塞写入操作,并且以最大写入吞吐量模式运行。同时,推荐使用 AVRO 文件格式以实现最佳压缩性能。

除了以上功能,0.5 版本还引入了仅追加可扩展表的概念,通过对非主键表定义 "bucket"="-1" 来实现。在这种模式下,表可以并发读写,被视为批量离线表,同时支持小文件自动合并功能。

此外,引入标签管理功能,可以方便地查询历史数据,并提供了自动创建标签和增量查询的支持。

在计算引擎方面,Paimon 在 Flink 和 Spark 上进行了深度集成。在 Flink 1.17 版本中,Paimon 提供了更强大的 ALTER TABLE 语法以及基于 Hive metastore 的 FlinkGenericCatalog,使得用户可以方便地使用 Paimon、Hive 和 Flink Generic Tables(如 Kafka 等表)的所有表。

在 Spark 集成方面,Paimon 0.5 版本引入了许多写特性,例如分区覆盖、分区管理、模式合并写以及流式 sink 的支持。可以看出 Paimon 在 Spark 集成上进行了大量工作,为用户提供了更丰富的功能。

未来,Paimon 将继续努力解决加速将 CDC 数据导入数据湖、丰富 Merge 引擎以提升流计算、Changelog 流式读取以及追加模式加速 Hive 离线表等场景的需求。同时,Paimon 也将进一步改进批处理路径,为 Hive 提供更多优化。

Paimon 0.5 版本在功能上有了大量的增强和改进,提供了更丰富的数据导入方式和计算引擎集成选项,为用户构建统一的存储和计算引擎提供了更多选择。可以预见,Paimon 未来会在批流一体场景上有更多创新。

(END)