流读是 Paimon 的核心特性,流读指的是系统可以像读取 Kafka 或Binlog 一样持续不断的监听和加载 Paimon 表的最新数据。 Paimon 支持两种表模式:Primary key 和Append Only。Append Only 表为仅追加,数据没有版本概念,因此它的流读实现起来比较简单,仅需对比两个快照读取新增文件即可。 Primary key 表中同一主键...
在这种模式下,可以将append-only table看成是一个由bucket分隔的队列。 同一个桶中的每条记录都是严格排序的,流式读取会严格按照写入的顺序将记录传输到下游。 使用此模式,不需要进行特殊配置,所有数据都会以队列的形式放入一个桶中。还可以定义bucket和bucket-key以实现更大的并行性和分散数据。 Compaction 默认情...
这对于那些在 k8s 上使用 flink 的人来说尤其重要。 对于仅追加表,您可以为仅追加表设置write-buffer-for-append选项。 将此参数设置为true,writer将使用Segment Pool缓存记录以避免OOM。 Example 以下是创建Append-Only表并指定bucket key的示例。 CREATETABLEMyTable ( product_idBIGINT, priceDOUBLE, salesBIGINT...
对于非主键表:如果在创建Paimon表时没有指定主键(Primary Key),则该表就是Paimon Append Only表。您只能以流式方式将完整记录插入到表中,适合不需要流式更新的场景(例如日志数据同步)。 Append 表的 Compaction 只是用来合并小文件。目前 Append 表有两种模式:Scalable 表与 Queue 表。整体上我们推荐使用 Scalable ...
对于主键表来说,这是一种“MergeOnRead”技术。读取数据时,会合并多层LSM数据,并行数会受到桶数的限制。虽然Paimon的merge会高效,但是还是赶不上普通的AppendOnly表。 如果你想在某些场景下查询得足够快,但只能找到较旧的数据,你可以: 配置full-compaction.delta-commits,写入数据时(目前只有Flink)会定期进行full Comp...
主键表是5个文件,但是Append-Only表(桶)可能单个桶里有50个小文件,这是很难接受的。更糟糕的是,不再活动的分区还保留了如此多的小文件。 建议配置Full-Compaction,在Flink写入时配置‘full-compaction.delta-commits’定期进行full-compaction。并且可以确保在写入结束之前分区被full-compaction。
Append Only 表采用追加写的方式,只能插入一条完整的记录,不能更新和删除,也无需定义主键。Append Only 表主要用于无需更新的场景,例如 ODS 层数据将 Kafka 埋点日志数据解析后写入到 Paimon 表,保留原貌不做任何更新,此时推荐采用 Paimon 的 Append Only 表。
第二个方向:Append-Only 处理增强。Paimon 之前的 Append-Only 需要定义 Bucket,这是一个非常难定义的概念。所以后面 Paimon 应该支持真正的离线表,应该是没有 Bucket,且离线表的写入应该也包含小文件合并,并这也符合 Paimon 全自动的概念。 第三个方向:除了 StarRocks 的生态的对接,我们希望将 Spark 打造成第二...
理解Append-Only 表的文件 默认情况下 Append Only 表也会进行自动合并以减少小文件的数量。 然而,对于 Bucket 的 Append Only 表来说,它会出于顺序目的而只压缩 Bucket 内的文件,这可能会保留更多的小文件。 理解Full Compaction 也许你认为 Primary Key 表中的 5 个文件还可以接受,但 Append Only 表(Bucket)...
Paimon仅支持主键表和Append Only表。本文为您介绍Paimon主键表和Append Only表的基本特性与功能。 Paimon主键表 创建Paimon表时指定了主键(primary key),则该表即为Paimon主键表。 语法结构 例如,创建一张分区键为dt,主键为dt、shop_id和user_id,分桶数固定为4的Paimon主键表。 CREATE TABLE T ( dt STRING, ...