
# 创建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表类型介绍
表1Append 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'**时分区值更小的数据先消费，否则分区创建时间更早的数据先消费。  - 同分区同桶：消费顺序和写入顺序一致。  - 同分区不同桶：消费顺序不确定。   |
   
