Apache Paimon | 引擎概述
Created|Updated|Apache Paimon
|Post Views:
Paimon 不仅原生支持 Flink SQL 的写入和查询,而且还提供其他流行引擎的查询,例如 Apache Spark 和 Apache Hive。
兼容性矩阵
| 引擎 | 版本 | 批读取 | 批写入 | 创建表 | 流写入 | 流读取 | 批覆盖 |
|---|---|---|---|---|---|---|---|
| Flink | 1.14 - 1.17 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Hive | 2.1 - 3.1 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Spark | 3.1 - 3.4 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Spark | 2.4 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Trino | 358 - 400 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Presto | 0.236 - 0.279 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
正在进行的引擎:
Doris:开发中,支持Paimon目录,Doris 产品路线图 2023。
Seatunnel:开发中,引入 Paimon 连接器。
Starrocks:正在讨论中。
(END)
Author: Johnson Lin
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2023-09-06
Apache Paimon 0.5正式发布
Apache Paimon 0.5.0-incubating 版本终于在今天正式发布了。有近 100 位贡献者参与了此版本的开发,共完成了 500 多次代码提交,为社区带来了许多令人兴奋的新功能和改进。 该版本的主要亮点功能如下: CDC 数据入湖的功能已经成熟。 引入了标签的概念,为离线数据仓库提供不可变视图。 主键表的动态桶模式已投入生产。 引入仅追加模式可扩展表,以取代 Hive 表。 CDC摄入Paimon 支持多种方式将数据导入 Paimon 表,并支持模式演化。在 0.5 版本中,新增了许多新功能,包括: MySQL 数据表同步 支持将分片数据同步到一个 Paimon 表中。 支持将所有字段类型映射为字符串。 MySQL 数据库同步 支持合并多个数据库中的多个分片数据。 支持 --mode combined 模式,将所有表整合到一个统一的数据汇中进行同步,并支持在不重启作业的情况下同步新增的表。 从 Kafka 同步数据表 将 Kafka 主题里的数据表同步到 Paimon 表中。 支持 Canal 和 OGG 格式。 从 Kafka 同步数据...
2023-06-10
Apache Paimon | Flink引擎
本文介绍如何在 Flink 中使用 Paimon。 准备 Paimon Jar 文件Paimon 目前支持 Flink 1.17、1.16、1.15 和 1.14。推荐使用最新的 Flink 版本以获得更好的体验。 下载对应版本的 jar 文件: Flink 版本 Jar Flink 1.17 https://repo.maven.apache.org/maven2/org/apache/paimon/paimon-flink-1.17/0.4.0-incubating/paimon-flink-1.17-0.4.0-incubating.jar Flink 1.16 https://repo.maven.apache.org/maven2/org/apache/paimon/paimon-flink-1.16/0.4.0-incubating/paimon-flink-1.16-0.4.0-incubating.jar Flink 1.15 https://repo.maven.apache.org/maven2/org/apache/paimon/pa...
2023-06-10
Apache Paimon | 仅追加表(Append Only 表)
如果一个表没有定义主键,那么它默认是一个 append-only 表。 你只能向表中插入完整的记录。不支持删除或更新,也不能定义主键。这种类型的表适用于不需要更新的用例(例如日志数据同步)。 分桶(Bucketing)你也可以为 Append-only 表定义桶的数量,见 Bucket。 建议设置 bucket-key 字段。否则,数据会按照整行进行散列,性能会很差。 压缩(Compaction)默认情况下,接收节点(sink 节点)将自动进行压缩以控制文件数量。以下选项控制压缩策略: Key 默认值 类型 描述 write-only false Boolean 如果设置为 true,压缩和快照过期将被跳过。此选项与专门的压缩作业一起使用。 compaction.min.file-num 5 Integer 对于文件集 [f_0,…,f_N],满足 sum(size(f_i)) >= targetFileSize 的最小文件数,以触发仅追加表的压缩操作。此值可避免压缩几乎完整的文件,这不符合成本效益。 compaction.max.file-num ...
2023-06-10
Apache Paimon | 外部日志系统
除了底层表文件的变更日志外,Paimon 的变更日志也可以存储在外部日志系统中,比如 Kafka,或者从外部日志系统中消费。通过指定 log.system 表属性,用户可以选择使用哪个外部日志系统。 如果选择使用外部日志系统,那么所有写入表文件中的记录也会写入日志系统。因此,流查询产生的变化会从日志系统读取,而不是表文件。 一致性保证默认情况下,日志系统中的变化要等到快照之后才对消费者可见,就像表文件一样。这种行为保证了精确一次的语义。也就是说,每条记录只被消费者看到一次。 但是,用户也可以指定表的属性 'log.consistency' = 'eventual',这样写进日志系统的变更日志就可以立即被消费者消费,而不用等待下一个快照。这种行为减少了变更日志的延迟,但由于可能发生的故障,它只能保证至少一次的语义(即,消费者可能会看到重复的记录)。 如果设置 'log.consistency' = 'eventual',为了获得正确的结果,Flink 中的 Paimon 源将自动添加“normalize”运算符进行重复...
2023-06-10
Apache Paimon | 基本概念
快照(Snapshot)快照捕获了一个表在某个时间点上的状态。用户可以通过最新的快照来访问一个表的最新数据。通过时间旅行,用户也可以通过较早的快照访问表的先前状态。 分区(Partition)Paimon 采用了与 Apache Hive 相同的分区概念来分离数据。 分区是一种可选的方式,可以根据特定列的值(如日期、城市和部门等)将表划分为相关部分。每个表可以有一个或多个分区键来标识一个特定的分区。 通过分区,用户可以高效地对表中的某一记录切片进行操作。有关如何将文件划分为多个分区的详细信息,请参见文件布局。 如果定义了主键,分区键必须是主键的一个子集。 桶(Bucket)非分区的表或分区表中的分区会被细分为桶,以便为数据提供额外的结构,这可用于更有效的查询。 一个桶的范围是由记录中的一个或多个列的哈希值决定的。用户可以通过提供 bucket-key 选项来指定桶的列。如果没有指定 bucket-key 选项,将使用主键(如果定义了的话)或完整记录作为桶的键。 桶是最小的读写存储单元,所以桶的数量限制了最大的处理并行度。不过,这个数字不应该太大,因为它会导致大量的小文件和低读...
2023-06-20
Apache Paimon | 概述
Apache Paimon(孵化中)是一个流式数据湖平台,支持高速数据摄取、变化数据跟踪和高效的实时分析。 架构 如上面的架构图所示: 读/写:Paimon 支持以多种方式读/写数据和执行 OLAP 查询。 对于读取,它支持消费 历史快照(批处理模式)的数据, 从最新偏移量(流处理模式)读取数据,或者 以混合方式读取增量快照。 对于写入,它支持从数据库的变化日志(CDC)中进行流式同步,或从离线数据中批量插入/覆盖。 生态系统:除了 Apache Flink 之外,Paimon 还支持其他计算引擎的读取,如 Apache Hive、Apache Spark 和 Trino。 内部原理:Paimon 在文件系统/对象存储中存储列式文件,并使用 LSM 树结构来支持大量数据更新和高性能查询。 统一存储对于像 Apache Flink 这样的流引擎,通常有三种类型的连接器: 消息队列,如 Apache Kafka,用于管道的源头和中间阶段,以确保延迟在秒级内。 OLAP 系统,如 Clickhouse,以流的方式接收处理后的数据,并为用户的临时查询提供服务。 批量存储,如 A...