确定写入方式
写入方式介绍
写入方式 |
支持的表类型 |
功能介绍 |
使用介绍 |
优选场景 |
---|---|---|---|---|
insert into |
cow/mor |
insert into写入的数据将会按主键去更新表内的存量数据。 |
|
多源表关联查询后的结果写Hudi表。 |
insert overwrite |
cow/mor |
|
|
cow表,分区覆盖。 |
insert overwrite table |
cow/mor |
可以整表覆盖,也可以分区覆盖。 |
|
整表覆盖。 |
bulk_insert |
cow/mor |
|
参考常用参数介绍及使用场景。 |
Hudi表初始化。 |
update |
cow/mor |
批量更新列。 |
|
批量地对某一列的值进行更新。 |
merge into |
cow/mor |
一条语句完成update/insert/delete多种写入。 |
|
不推荐,社区的merge into功能弱,限制多,用法复杂。 |
delete |
cow/mor |
小批量删除数据。 |
|
小批量删除数据,如删除表中30%以下的数据。 |
注意事项
- delete不用来删除分区,删除分区请用drop partition命令,具体请参考常用SQL介绍。
- 对于bucket索引,写入任务可能会遇到重复Bucket ID的报错“Find multiple files at partition xxx belongs to the same bucket id = xxx”。
- insert into作业与truncate冲突,truncate正在重新初始化Hudi表,但是insert into作业此时正在写文件,导致重新初始化出来的hudi表里残留上一次insert into作业的文件。
- insert overwrite作业切换为insert into作业,insert overwrite作业写Hudi时clean和archive的配置必须按照选择合适的表服务执行方式的指导正确去使用,否则insert overwrite作业的replacecommit元数据已经被归档,但是数据文件还在。