当前位置: 首页 > news >正文

Hudi学习笔记1

使用注意

  • 从 0.10.0 版本开始,primaryKey 为必须的,不再支持没有主键的表。

  • primaryKey、primaryKey 和 type 均大小写敏感。

  • 对于 MOR 类型的表,preCombineField 为必须的。

  • 当设置 primaryKey、primaryKey 或 type 等 hudi 配置时,tblproperties 优先于 options 。

  • 使用 Spark SQL 创建 hudi 表时,默认设置:hoodie.datasource.write.hive_style_partitioning=true 。

Hudi 0.13.0 新功能

2023/2/22 日发布(https://hudi.apache.org/releases/release-0.13.0/)。

  • PartialUpdateAvroPayload

支持更新部分字段的 Payload,继承 OverwriteNonDefaultsWithLatestAvroPayload。
OverwriteNonDefaultsWithLatestAvroPayload 继承 OverwriteWithLatestAvroPayload,重写了 combineAndGetUpdateValue,新数据会按字段跟 schema 中的 default value 进行比较,如果 default value 非 null 且与新数据中的值不同时,则在新数据中更新该字段。由于通常 schema 定义的 default value 都是 null,在此场景下可以实现更新非 null 字段的功能,即如果一条数据有五个字段,使用此 Payload 更新三个字段时不会影响另外两个字段原来的值。

https://github.com/apache/hudi/blob/master/hudi-common/src/main/java/org/apache/hudi/common/model/PartialUpdateAvroPayload.java
https://github.com/apache/hudi/blob/master/hudi-common/src/main/java/org/apache/hudi/common/model/OverwriteNonDefaultsWithLatestAvroPayload.java

  • 一致性哈希索引(Consistent Hashing Index)

set hoodie.index.bucket.engine=‘CONSISTENT_HASHING’

  • 多客户端写入的早期冲突检测(OCC)

set hoodie.write.concurrency.early.conflict.detection.enable=‘true’

  • 支持 支持 Flink 1.16

  • 支持 Pulsar 数据源

  • 更新 CDC(Change-Data-Capture)

注意 CDC 仍是实验性功能,仅支持 COW 表,CDC 查询尚不支持 MOR 表。

  • 新增元数据管理服务 Metaserver

hoodie.metaserver.enabled=true
hoodie.metaserver.uris=thrift://:9090

注意目前为实验性功能。

常用表属性

  • hoodie.payload.ordering.field

在合并和写入存储之前,对相同主键进行排序的字段名,默认为 ts。

  • hoodie.datasource.write.hive_style_partitioning

是否使用 hive 风格的表分区。使用 Spark SQL 创建的 hudi 表默认为 true,使用 Flink SQL 创建的 hudi 表默认为 false 。

  • hoodie.sql.insert.mode

设置数据插入模式,有三种取值(默认为 upsert):

  • upsert

更新插入模式,是否更新依赖 tblproperties 的 preCombineField 指定的值(一般为 BIGINT 类型的时间戳值),亦即 hoodie.datasource.write.precombine.field 的值。

  • strict

严格模式,为纯 insert 模式,但如果相同 tblproperties 的 primaryKey 已经存在,亦即 hoodie.datasource.write.recordkey.field 指定的已存在,则不执行插入,否则插入。

  • non-strict

非严格模式,也为纯 insert 模式,不会关系 primaryKey 是否已经存在,允许重复。

  • hoodie.datasource.write.operation

设置写操作,有三种取值(默认为 upsert):

  • upsert

更新插入。

  • insert

普通插入。

  • bulkinsert

批量插入。如果设置为 bulkinsert,还得同时将 hoodie.sql.bulk.insert.enable 值设置为 true,注意 hoodie.sql.bulk.insert.enable 值默认为 false 。

  • hoodie.index.type

设置索引类型。对 spark 引擎默认为 SIMPLE,对 flink 引擎默认为 INMEMORY。可选取值有:BLOOM | GLOBAL_BLOOM |SIMPLE | GLOBAL_SIMPLE | INMEMORY | HBASE | BUCKET。

  • hoodie.bucket.index.num.buckets

设置每个分区的桶数,注意表创建后不能修改,仅当 hoodie.index.type 值为 BUCKET 时有效。

  • hoodie.index.bucket.engine

设置桶索引引擎类型,默认为 SIMPLE,可选的包括:SIMPLE | CONSISTENT_HASHING。SIMPLE 为固定个数的桶,CONSISTENT_HASHING 支持动态调整桶数。

  • hoodie.simple.index.parallelism

仅适用 hoodie.index.type 为 SIMPLE。用于指定索引查询并行度,默认为 100,同 Spark Shuffle 相关。

  • hoodie.write.concurrency.early.conflict.detection.enable

版本:0.13.0(实验性的)

是否启用控制乐观并发控制 OCC(Optimistic Concurrency Control),默认为 false,即关闭 OCC,这时不能有多写入者。

http://www.lryc.cn/news/66189.html

相关文章:

  • 嚯——ChatGPT是很强,但也会胡说八道。。。
  • Springboot常用注解总结
  • 让chatGPT给我写一个CSS,我太蠢了
  • 华为OD题目:分奖金
  • 【算法题】2401. 最长优雅子数组
  • 【Vue】Vue快速入门
  • 二本菜鸡,颓废两年的自我救赎
  • Spring boot 常用注解
  • mysql从零开始(05)----锁
  • 《Linux 内核设计与实现》03. 进程管理
  • 深入探究HDFS:高可靠、高可扩展、高吞吐量的分布式文件系统【上进小菜猪大数据系列】
  • GIMP制作艺术字技巧
  • Redis 布隆过滤器总结
  • 云基础设施安全:7个保护敏感数据的最佳实践
  • centos7安装nginx
  • PyQt5 基础篇(一)-- 安装与环境配置
  • Java—JDK8新特性—函数式接口【内含思维导图】
  • 【MySQL】外键约束和外键策略
  • 3. SQL底层执行原理详解
  • Bus动态刷新
  • 逆波兰式的写法
  • Linux系统日志介绍
  • 第三十二章 React路由组件的简单使用
  • “裸奔”时代下,我们该如何保护网络隐私?
  • c#笔记-方法
  • 054、牛客网算法面试必刷TOP101--堆/栈/队列(230509)
  • 怎么让chatGTP写论文-chatGTP写论文工具
  • springboot 断点上传、续传、秒传实现
  • 2023河南省赛vp题解
  • 港科夜闻|香港科大与香港资管通有限公司签署校企合作备忘录,成立校企合作基金促科研成果落地...