简介
本文旨在介绍 Hudi 的各种写操作,以便在使用中作出更好的选择。
写操作的类型
1. UPSERT
这是默认的写操作类型,通过查找索引,输入的数据会被打上 insert 或者 update 的标签。推荐在数据库变更捕获的场景使用,通常这类场景会包含更新的记录。使用 UPSERT 操作类型写入的目标的表不会存在重复的数据。
2. INSERT
这种操作与 UPSERT 操作非常类似,只是跳过了查找索引这一步,使得它在性能上要比 UPSERT 要快很多。如果只是需要 Hudi 的事务写/增量拉取数据/存储管理的能力,并且可以容忍重复数据,那么可以选择 INSERT 操作。
3. BULK_INSERT
UPSERT 和 INSERT 操作都把输入的数据先在内存中缓存起来以提高性能,但是对于首次初始化导入数据到 Hudi 表会显得有点笨重。BULK_INSERT 提供了与 INSERT 类似的机制,不同的时候实现了对排序数据的写算法,可以快速的完成几百TB数据的初始化加载。
4. DELETE
Hudi 支持两种方式的 DELETE操作:
- Soft Deletes: 保留record key, 把其他所有的字段的值都置为 NULL。
- Hard Deletes: 从物理上删除这条记录。