官宣|Apache Paimon 0.6.0 发布公告

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 官宣|Apache Paimon 0.6.0 发布公告

Apache Paimon PPMC 正式发布 Apache Paimon 0.6.0 孵化版本。共有 58 人参与了该版本的开发,并完成了 400 多条提交。感谢所有贡献者的支持!


一些突出的进展如下:

  1. Flink Paimon CDC 支持目前大部分的主流数据源。
  2. Flink 1.18 和 Paimon 支持 CALL 过程,这将使表管理变得更容易。
  3. 跨分区更新可用于生产!
  4. 引入了读优化表 (T$ro),以提高查询性能。
  5. Append 表生产可用!
  6. Paimon Presto 模块生产可用!
  7. Metrics 系统与 Flink Metrics 集成
  8. Spark Paimon 取得巨大进步

详情请参考下文。


Flink


Paimon CDC


Paimon CDC 集成了 Flink CDC、Kafka、Pulsar 等,并在 0.6 版本中提供了全面的支持:

  1. Kafka CDC 支持的格式 Canal Json、Debezium Json、Maxwell 和 OGG。
  2. 新增 Pulsar CDC,包括表同步和整库同步。
  3. Mongo CDC 可用于生产!


Flink Batch Source


默认情况下,批量读取的并行性与 Split 数相同,而流读取的并行性与桶数相同,但不会大于 scan.infer-parallelism.max(默认为 1024)。


Flink Streaming Source


Consumer-id 可用于生产!


当流式读表记录消耗 Paimon 中的快照 id 时,可以指定 consumer-id,新启动的作业可以继续消耗之前的进度,而无需从状态中恢复。你也可以将 consumer.mode 设为 at-least-once 以获得更好的 Checkpoint 顺滑度。


Flink Time Travel


Flink 1.18 SQL 支持时间旅行查询(也可使用 dynamic option):



SELECT * FROM t FOR SYSTEM_TIME AS OF TIMESTAMP '2023-01-01 00:00:00';


Flink Call Procedures


Flink 1.18 SQL 支持以下 Call Procedures:

Procedure Name

Example

compact

CALL sys.compact('default.T', 'p=0', 'zorder', 'a,b', 'sink.parallelism=4')

compact_database

CALL sys.compact_database('db1|db2', 'combined', 'table_.*', 'ignore', 'sink.parallelism=4')

create_tag

CALL sys.create_tag('default.T', 'my_tag', 10)

delete_tag

CALL sys.delete_tag('default.T', 'my_tag')

merge_into

CALL sys.merge_into('default.T', '', '', 'default.S', 'T.id=S.order_id', '', 'price=T.price+20', '', '*')

remove_orphan_files

CALL remove_orphan_files('default.T', '2023-10-31 12:00:00')

reset_consumer

CALL sys.reset_consumer('default.T', 'myid', 10)

rollback_to

CALL sys.rollback_to('default.T', 10)

Flink 1.19 将支持 "命名参数"(Named Arguments),这将使其在有多个参数时更易于使用。


Committer Improvement


Committer 负责提交元数据,有时可能会遇到瓶颈,导致反压操作。在 0.6 中,我们进行了以下优化:

  1. 默认情况下,paimon 会同步删除过期快照。用户可以通过将 snapshot.expire.execution-mode 设置为 async 来使用异步过期模式,以提高性能。
  2. 可以使用 Flink 的细粒度资源管理(fine-grained-resource-management)功能,只增加 Committer 的堆内存和 CPU。


Primary Key Table


Cross Partition Update


跨分区更新可用于生产!


目前支持 Flink 批量和流式写入,企业已将其应用于生产环境!如何使用跨分区更新:

  1. 主键不包含所有分区字段。
  2. 使用动态 Bucket 模式,即 bucket 为-1。


该模式直接维护 Key 到分区和桶的映射,使用本地磁盘,并在开始写任务时通过读取表中的所有现有 Keys 来初始化索引。虽然维护索引是必要的,但这种模式也能保持较高的吞吐量性能。


Read Optimized


对于主键表,这是一种 "MergeOnRead "技术。读取数据时,多层 LSM 数据会被合并,并行数量会受到数据桶数量的限制。如果想在某些情况下快速查询,但只能找到较早的数据,可以从读优化表中查询:SELECT * FROM T$ro。


但这无法保证数据的新鲜度,因此可以在写入数据时配置 "full-compaction.delta-commits",以确保读取的数据具有确定的延迟。


StarRocks 和其他 OLAP 系统将在 Paimon 0.6 的基础上发布一个版本,以大大提高读优化表的查询性能。


Partial-Update


在 0.6 中,你可以为带有 Sequence-Group 的 Partial-Update 合并引擎定义聚合函数。这样就可以在特定条件下对某些字段执行特殊的聚合,如计数、求和等。


Compaction


我们引入了一些异步技术,以进一步提高 Compaction 的性能!20%+


0.6 引入了整库 Compaction 功能,您可以运行命令为多个数据库提交 Compaction 作业。如果提交的是流式作业,作业会持续监控表的新变化,并在需要时执行 Compaction。


Append Table


Append Table 模式生产可用!


通过为非主键表定义 "bucket"="-1",可以为该表分配一种 Append 可扩展模式。这种表是 Hive 格式的升级版。你可以使用它:

1. Spark、Flink 批量读写,包括 INSERT OVERWRITE 支持。

2. Flink、Spark 流读写,Flink 会对小文件进行压缩。

3. 你还可以对该表进行排序(z-order),这将大大加快查询性能,尤其是当存在与排序键相关的过滤条件时。


你可以为 append-only 表设置 write-buffer-for-append 选项,以适用于同时流式写入大量分区的情况。


0.6 还引入了 Hive 表迁移,Apache Hive 支持 ORC、Parquet 文件格式,这些格式可以迁移到 Paimon。当数据迁移到 paimon 表时,原表将永久消失。因此,如果还需要原始表,请备份数据。迁移后的表将成为 Append 表。你可以使用 Flink Spark CALL 存储过程来迁移 Hive 表。


StarRocks 和其他 OLAP 系统将在 Paimon 0.6 的基础上发布一个版本,以大大提高 Append 表的查询性能。


Tag Management


Upsert To Partitioned


Tag 将维护 Snapshot 的 Manifest 和数据文件。离线数据仓库每天都需要一个不可变的视图,以确保计算的幂等性。因此,我们创建了一个 Tag 机制来产生这些视图。


但是,传统的 Hive 数据仓库更习惯于使用分区来指定查询的 Tag,更习惯于使用 Hive 计算引擎。


因此,我们引入了 metastore.tag-to-partition 和 metastore.tag-to-partition.preview,将非分区主键表映射到 Hive 元存储中的分区表,并将分区字段映射为 Tag 的名称,以便与 Hive 完全兼容。


Tag with Flink Savepoint


你无法从很老的 Flink 保存点恢复写作业,这可能会导致 Paimon 表出现问题。在 0.6 中,我们避免了这种情况,即当数据异常时会抛出异常,让作业无法启动。


如果想从老的保存点恢复,建议将 sink.savepoint.auto-tag 设置为 true,以启用自动为 Flink 保存点创建 Tag 的功能,并在重新恢复时 rollback 到此 Tag。


Formats


0.6 将 ORC 版本升级到 1.8.3,Parquet 版本升级到 1.13.1。在此版本中,ORC 原生支持 ZSTD,这是一种压缩率更高的压缩算法。我们建议在需要高压缩率时使用它。


Metrics


在 0.6 中,Paimon 构建了一个 Metrics 系统来衡量读写行为,Paimon 支持内置 Metrics 来衡量提交、扫描、写入和 Plan 等操作,这些 Metrics 可以桥接到 Flink 等计算引擎。对于流式读取来说,最重要的是 currentFetchEventTimeLag。


Paimon Spark


  1. 支持Spark3.5
  2. Structured Streaming:支持作为Streaming Source,支持通过自定义read trigger进行源端流量控制,支持流读changelog
  3. Row level op:DELETE 优化,支持UPDATE、MERGE INTO
  4. Call Procedure:新增compact、migrate_table、migrate_file、remove_orphan_files、create_tag、delete_tag、rollback
  5. 查询优化:Push down filter 优化、支持 Push down limit、Runtime filter(DPP)
  6. 其它:Truncate Table 优化、支持 CTAS、支持 Truncate Partition


Paimon Trino


Paimon Trino 模块主要有以下工作来加速查询:

  1. 优化转换 Page 的问题,避免 Page 太大导致内存溢出
  2. 实现了 Limit Pushdown,并且能结合分区的过滤条件


Paimon Presto


Paimon Presto 模块正式进入生产可用,增加了以下的能力:

  1. 实现了 Filter Pushdown,这让 Paimon Presto 进入正式可用
  2. 使用 Inject 模式,这可以让 Paimon Catalog 常驻进程中,提高查询的速度


关于 Paimon


  1. 微信公众号:Apache Paimon ,了解行业实践与最新动态
  2. 官网:https://paimon.apache.org/ 查询文档和关注项目
相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
10天前
|
消息中间件 关系型数据库 MySQL
Apache Flink CDC 3.1.0 发布公告
Apache Flink 社区很高兴地宣布发布 Flink CDC 3.1.0!
339 1
Apache Flink CDC 3.1.0 发布公告
|
18天前
|
存储 分布式计算 Apache
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
Apache Paimon 在构建实时数据湖与流批处理技术领域取得了重大突破,数据湖步入实时新篇章!
2371 6
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
|
18天前
|
消息中间件 API Apache
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会。
1862 2
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
|
18天前
|
SQL Java API
官宣|Apache Flink 1.19 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.19.0。
1889 2
官宣|Apache Flink 1.19 发布公告
|
18天前
|
消息中间件 存储 Apache
Apache Paimon 表模式最佳实践
Apache Paimon 表模式最佳实践
588 0
|
18天前
|
存储 SQL 分布式计算
Apache Paimon:Streaming Lakehouse is Coming
Apache Paimon:Streaming Lakehouse is Coming
|
18天前
|
存储 NoSQL 数据处理
Apache Paimon流式湖仓学习交流群成立
Apache Paimon流式湖仓学习交流群成立
175 2
|
10天前
|
消息中间件 Java Kafka
实时计算 Flink版操作报错之Apache Flink中的SplitFetcher线程在读取数据时遇到了未预期的情况,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
3天前
|
数据处理 Apache 流计算
|
10天前
|
Java 关系型数据库 数据库连接
实时计算 Flink版操作报错之遇到错误org.apache.flink.table.api.ValidationException: Could not find any factory for identifier 'jdbc',该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。

推荐镜像

更多