Hudi简记
Hudi建表语法
1 2 3 4 5 6
| CREATE TABLE [ IF NOT EXISTS] [database_name.]table_name [ (columnTypeList)] USING hudi [ COMMENT table_comment ] [ LOCATION location_path ] [ OPTIONS (options_list) ]
|
Hudi建表示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| # 分区表 drop table if exists app.test_tab; create table app.test_tab ( cust_no String not null comment '客户号', create_date date comment '创建日期', load_dt date comment '加载日期' ) using hudi options ( type='cow', primaryKey='cust_no', preCombineField='create_date', hoodie.index.type='SIMPLE' ) partitioned by (load_dt); comment on table app.test_tab is '测试表';
# 非分区表 drop table if exists app.test_tab; create table app.test_tab ( cust_no String not null comment '客户号', create_date date comment '创建日期', load_dt date comment '加载日期' ) using hudi options ( type='cow', primaryKey='cust_no', preCombineField='create_date', hoodie.index.type='SIMPLE' ); comment on table app.test_tab is '测试表';
|
Hudi建表常用参数
全部参数可查看:
All Configurations | Apache Hudi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| # 指定hudi类型 type='cow'
# 指定表的主键 可以是复合主键 用逗号分隔 主键必须指定 primaryKey='cust_no, trans_id'
# 指定预组合字段 用于主键相同时选取该字段值较大的记录 preCombineField='load_dt'
# 如果数据中数据字段值是null 则不进行更新 保留原值 payloadClass='org.apache.hudi.common.model.OverwriteNonDefaultsWithLatestAvroPayload'
# insert/upsert 如果表不需要更新 一定要配置成insert 性能更好 需要更新才配置为 upsert 离线表都是分区覆盖,所以配置为insert hoodie.datasource.write.operation='insert'
# 关闭插入去重模式 如果插入主键相同的一条数据 不会去重 会直接插入 变成相同主键有两条数据 hoodie.sql.insert.mode='non-strict'
# 对update/delete操作和存储中提取出来的key 执行轻量级join hoodie.index.type='SIMPLE'
# upsert数据中没有重复数据可以关闭去重操作 默认为true hoodie.combine.before.upsert='false'
# insert默认是会随机更新的 随机指某些情况下 这和Hudi合并小文件有关 要想insert操作不更新 可以使用以下配置 hoodie.merge.allow.duplicate.on.inserts = true
# 是否在写入数据前 先进行数据去重处理(按照precombine的key) 默认是false hoodie.combine.before.insert='false'
# 限制保存数据变更单版本数 hoodie.cleaner.commits.retained='1'
# 最少保留多少个commit元数据 设置为2会将当前所有的commit提交的个数减去2 剩下的3个元数据被归档 这个参数间接控制每次回收元数据个数 # 这个值必须大于 hoodie.cleaner.commits.retained hoodie.keep.min.commits='2'
# 最多保留多少个commit元数据 设置为4表示在第5个commit的时候会触发一次元数据归档 由这个参数来控制元数据归档时机 hoodie.keep.max.commits='4'
# 非分区表建议增加属性 hoodie.datasource.write.keygenerator.class='ora.apache.hudi.keygen.NonpartitionedKeyGenerator'
|
Hudi删除分区
1
| alter table app.test_tab drop partition (load_dt='2023-12-13');
|
蚂蚁🐜再小也是肉🥩!