Hudi简记

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/eb4711ca/

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表示在第5commit的时候会触发一次元数据归档 由这个参数来控制元数据归档时机
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');

蚂蚁再小也是肉🥩!


Hudi简记
http://heibanbai.com.cn/posts/eb4711ca/
作者
黑伴白
发布于
2023年12月13日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付