创建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表类型介绍
| 类型 | 表类型定义 | 说明 |
|---|---|---|
| 普通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表的顺序一致。具体来说:
|