SparkSQL建表参数规范
规则
- 建表必须指定primaryKey和preCombineField。
Hudi表提供了数据更新的能力和幂等写入的能力,该能力要求数据记录必须设置主键用来识别重复数据和更新操作。不指定主键会导致表丢失数据更新能力,不指定preCombineField会导致主键重复。
参数名称
参数描述
输入值
说明
primaryKey
hudi主键
按需
必须指定,可以是复合主键但是必须全局唯一。
preCombineField
预合并键,相同主键的多条数据按该字段进行合并
按需
必须指定,相同主键的数据会按该字段合并,不能指定多个字段。
- 禁止建表时将hoodie.datasource.hive_sync.enable指定为false。
指定为false将导致新写入的分区无法同步到Hive Metastore中。由于缺失新写入的分区信息,查询引擎读取该时会丢数。
- 禁止指定Hudi的索引类型为INMEMORY类型。
建表示例
create table data_partition(id int, comb int, col0 int,yy int, mm int, dd int) using hudi --指定hudi 数据源 partitioned by(yy,mm,dd) --指定分区, 支持多级分区 location 'obs://bucket/path/data_partition' --指定路径,使用DLI提供的元数据服务时只支持创建OBS表 options( type='mor', --表类型 mor 或者 cow primaryKey='id', --主键,可以是复合主键但是必须全局唯一 preCombineField='comb' --预合并字段,相同主键的数据会按该字段合并,当前不能指定多个字段 )