Apache Paimon | 引擎概述
发表于|更新于|编程文摘
|浏览量:
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)
文章作者: Johnson Lin
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Johnson Lin!
相关推荐
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 文件是以分层的方式组织的。下图说明了文件的布局。从一个快照文件开始,Paimon 读取器可以递归地访问表中的所有记录。 快照文件(Snapshot Files)所有的快照文件都存储在 snapshot 目录中。 一个快照文件是一个 JSON 文件,包含有关此快照的信息,包括: 使用的模式文件 包含此快照中所有更改的清单列表 清单文件(Manifest Files)所有清单列表和清单文件都存储在 manifest 目录中。 清单列表是清单文件名称的列表。 清单文件是一个包含有关 LSM 数据文件和变更日志文件的变更文件。例如,在相应的快照中,哪个 LSM 数据文件被创建,哪个文件被删除。 数据文件(Data Files)数据文件是按分区和桶组织的。每个桶目录包含一个 LSM 树及其变更日志文件。 目前,Paimon 支持使用 orc(默认)、parquet 和 avro 作为数据文件的格式。 LSM 树(LSM Trees)Paimon 采用 LSM 树(log-structured merge-tree,日志结构合并树)...
2023-06-10
Apache Paimon | 基本概念
快照(Snapshot)快照捕获了一个表在某个时间点上的状态。用户可以通过最新的快照来访问一个表的最新数据。通过时间旅行,用户也可以通过较早的快照访问表的先前状态。 分区(Partition)Paimon 采用了与 Apache Hive 相同的分区概念来分离数据。 分区是一种可选的方式,可以根据特定列的值(如日期、城市和部门等)将表划分为相关部分。每个表可以有一个或多个分区键来标识一个特定的分区。 通过分区,用户可以高效地对表中的某一记录切片进行操作。有关如何将文件划分为多个分区的详细信息,请参见文件布局。 如果定义了主键,分区键必须是主键的一个子集。 桶(Bucket)非分区的表或分区表中的分区会被细分为桶,以便为数据提供额外的结构,这可用于更有效的查询。 一个桶的范围是由记录中的一个或多个列的哈希值决定的。用户可以通过提供 bucket-key 选项来指定桶的列。如果没有指定 bucket-key 选项,将使用主键(如果定义了的话)或完整记录作为桶的键。 桶是最小的读写存储单元,所以桶的数量限制了最大的处理并行度。不过,这个数字不应该太大,因为它会导致大量的小文件和低读...
2023-06-10
Apache Paimon | 主键表
Changelog 表是创建表时的默认表类型。用户可以插入、更新或删除表中的记录。 主键由一列或多列组成,其值能唯一地标识表中的每一行记录。Paimon 强制对数据进行排序,这意味着系统将对每个桶内的主键进行排序。利用这个特性,用户可以通过在主键上添加过滤条件来实现高性能。 通过在变更日志表上定义主键,用户可以获得以下功能。 合并引擎当 Paimon 接收器(sink)收到具有相同主键的两条或更多记录时,它将把这些记录合并成一条记录以保持主键的唯一性。通过指定 merge-engine 表属性,用户可以选择如何合并记录。 在 Flink SQL TableConfig 中始终将 table.exec.sink.upsert-materialize 设置为NONE,sink upsert-materialize 可能会导致奇怪的行为。当输入乱序时,建议使用 Sequence Field 进行乱序校正。 去重(Deduplicate)deduplicate 合并引擎是默认的合并引擎。Paimon 只会保留最新的记录,并丢弃具有相同主键的其他记录。 具体来说,如果最新的记录是一条 ...
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 同步数据...


