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 | 仅追加表(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-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 | 基本概念
快照(Snapshot)快照捕获了一个表在某个时间点上的状态。用户可以通过最新的快照来访问一个表的最新数据。通过时间旅行,用户也可以通过较早的快照访问表的先前状态。 分区(Partition)Paimon 采用了与 Apache Hive 相同的分区概念来分离数据。 分区是一种可选的方式,可以根据特定列的值(如日期、城市和部门等)将表划分为相关部分。每个表可以有一个或多个分区键来标识一个特定的分区。 通过分区,用户可以高效地对表中的某一记录切片进行操作。有关如何将文件划分为多个分区的详细信息,请参见文件布局。 如果定义了主键,分区键必须是主键的一个子集。 桶(Bucket)非分区的表或分区表中的分区会被细分为桶,以便为数据提供额外的结构,这可用于更有效的查询。 一个桶的范围是由记录中的一个或多个列的哈希值决定的。用户可以通过提供 bucket-key 选项来指定桶的列。如果没有指定 bucket-key 选项,将使用主键(如果定义了的话)或完整记录作为桶的键。 桶是最小的读写存储单元,所以桶的数量限制了最大的处理并行度。不过,这个数字不应该太大,因为它会导致大量的小文件和低读...
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 | 文件操作
本文将深入探讨各种文件操作对文件产生的影响。文章提供具体的例子和实用技巧,说明 Paimon 是如何有效管理文件的。此外,通过对提交(commit)和压缩(compact)等操作的深入剖析,旨在加深对文件的创建和更新的理解。 先决条件在深入阅读本文之前,本文假设你已经了解了以下内容: Paimon 基本概念; Paimon 文件布局; 如何在 Flink 中使用 Paimon。 创建目录通过 ./sql-client.sh 启动 Flink SQL 客户端,并逐一执行以下语句来创建 Paimon 目录: 123456CREATE CATALOG paimon WITH ('type' = 'paimon','warehouse' = 'file:///tmp/paimon');USE CATALOG paimon; 执行该创建目录语句会在给定的路径 file:///tmp/paimon 创建一个目录: 12$ ls /tmp/paimondefault.db 创建表执行下面的创建表语句,创建一个有...


