更新时间:2026-06-11 GMT+08:00
分享

创建Paimon Append Only表

操作场景

在创建Paimon表时没有指定主键(Primary Key),则创建的为Paimon Append Only表。与主键表相比,Append Only表不能产生changelog变更日志,只能追加数据,适合不需要流式更新的场景。

语法结构

例如,创建一张分区键为pt的Append Only表:

-- SPARK SQL
CREATE TABLE my_table (
    id  INT,
    a  STRING,
    pt STRING
) TBLPROPERTIES (
    'bucket' = '4'
);

Append Only表类型介绍

表1 Append Only表类型

类型

表类型定义

说明

普通Append表(默认)

创建Paimon Append Only表时,不指定Bucket或指定'bucket' = '-1'

无存储桶概念,类似Hive 表,数据文件按分区组织,数据可排序,写入速度更快。支持小文件自动合并,也可以设置write-only=true关闭自动合并,使用独立compaction任务进行压缩。

流式消费时无法保证消费顺序和写入顺序一致。适合对数据的流式消费顺序无要求的场景。

分桶Append表

创建Paimon Append Only表时,指定'bucket' = '<num>',即可指定非分区表的分桶数为<num>,或者分区表单个分区的分桶数为<num>。<num>是一个大于0的整数。

默认根据每条数据所有列的值确定该数据属于的分桶。可以通过指定bucket-key参数,修改数据的分桶方式。例如,设置'bucket-key' = 'c1,c2',则Paimon将根据每条数据c1和c2两列的值,确定该数据属于的分桶。

流式消费时可以保证每个分桶中数据的消费顺序与数据写入Paimon表的顺序一致。具体来说:

  • 不同分区:'scan.plan-sort-partition' = 'true'时分区值更小的数据先消费,否则分区创建时间更早的数据先消费。
  • 同分区同桶:消费顺序和写入顺序一致。
  • 同分区不同桶:消费顺序不确定。

相关文档