【Hudi】参数

quickStart https://hudi.apache.org/docs/flink-quick-start-guide/
官方文档 https://hudi.apache.org/docs/configurations/#FLINK_SQL

hoodie.datasource.write.hive_style_partitioning

在这里插入图片描述

Hudi提供多种写入方式,具体见hoodie.datasource.write.operation配置项,这里主要介绍UPSERT、INSERT和BULK_INSERT。

  • INSERT(插入): 该操作流程和UPSERT基本一致,但是不需要通过索引去查询具体更新的文件分区,因此它的速度比- UPSERT快。当数据源不包含更新数据时建议使用该操作,若数据源中存在更新数据,则在数据湖中会出现重复数据。
  • BULK_INSERT(批量插入):用于初始数据集加载, 该操作会对主键进行排序后直接以写普通parquet表的方式插入Hudi表,该操作性能是最高的,但是无法控制小文件,而UPSERT和INSERT操作使用启发式方法可以很好的控制小文件。
  • UPSERT(插入更新): 默认操作类型。Hudi会根据主键进行判断,如果历史数据存在则update如果不存在则insert。因此在对于CDC之类几乎肯定包括更新的数据源,建议使用该操作。
    说明:
    由于INSERT时不会对主键进行排序,所以初始化数据集不建议使用INSERT。
    在确定数据都为新数据时建议使用INSERT,当存在更新数据时建议使用UPSERT,当初始化数据集时建议使用BULK_INSERT。

Apache Hudi支持bulk_insert操作来将数据初始化至Hudi表中,该操作相比insert和upsert操作速度更快,效率更高。bulk_insert不会查看已存在数据的开销并且不会进行小文件优化。

set ht_sparkconf_spark.hudi.enabled=true;
set hoodie.sql.bulk.insert.enable=true;
set hoodie.sql.insert.mode=non-strict;
set hoodie.combine.before.insert=false;

set ht_sparkconf_spark.hudi.enabled=true;

https://hudi.apache.org/cn/docs/performance/

Bulk Insert
Write configurations in Hudi are optimized for incremental upserts by default. In fact, the default write operation type is UPSERT as well. For simple append-only use case to bulk load the data, following set of configurations are recommended for optimal writing:

-- Use “bulk-insert” write-operation instead of default “upsert”
hoodie.datasource.write.operation = BULK_INSERT
-- Disable populating meta columns and metadata, and enable virtual keys
hoodie.populate.meta.fields = false
hoodie.metadata.enable = false
-- Enable snappy compression codec for lesser CPU cycles (but more storage overhead)
hoodie.parquet.compression.codec = snappy

For ingesting via spark-sql

-- Use “bulk-insert” write-operation instead of default “upsert”
hoodie.sql.insert.mode = non-strict,
hoodie.sql.bulk.insert.enable = true,
-- Disable populating meta columns and metadata, and enable virtual keys
hoodie.populate.meta.fields = false
hoodie.metadata.enable = false
-- Enable snappy compression codec for lesser CPU cycles (but more storage overhead)
hoodie.parquet.compression.codec = snappy

We recently benchmarked Hudi against TPC-DS workload. Please check out our blog for more details.

set hoodie.sql.insert.mode=non-strict;

https://doc.hcs.huawei.com/zh-cn/usermanual/mrs/mrs_01_24273.html

Insert模式:Hudi对于设置了主键的表支持三种Insert模式,用户可以设置参数hoodie.sql.insert.mode来指定Insert模式,默认为upsert。
strict模式,Insert 语句将保留 COW 表的主键唯一性约束,不允许重复记录。如果在插入过程中已经存在记录,则会为 COW 表抛出 HoodieDuplicateKeyException;对于MOR表,该模式与upsert模式行为一致。
non-strict模式,对主键表采用insert处理。
upsert模式,对于主键表的重复值进行更新操作。

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值