当前位置: 首页 > 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,这时不能有多写入者。

相关文章:

Hudi学习笔记1

使用注意 从 0.10.0 版本开始,primaryKey 为必须的,不再支持没有主键的表。 primaryKey、primaryKey 和 type 均大小写敏感。 对于 MOR 类型的表,preCombineField 为必须的。 当设置 primaryKey、primaryKey 或 type 等 hudi 配置时&#…...

嚯——ChatGPT是很强,但也会胡说八道。。。

现在的ChatGPT确实强,但是也会一本正经的胡说八道,例如它回答“nineteen”中有12个字母、或是旗鱼是哺乳动物…… 尽管ChatGPT可以生成流畅甚至优雅的散文,轻松通过困扰了AI领域超过70年的图灵测试基准,但它也可能看起来非常愚蠢…...

Springboot常用注解总结

目录 一、什么是Spring Boot二、Spring常用注解三、Spring Boot常用注解1、SpringBootApplication2、ImportAutoConfiguration3、SpringBootConfiguration4、ImportResource5、PropertySource6、PropertySources7、Role8、Scope9、Lazy11、Profile12、DependsOn13、PostConstru…...

让chatGPT给我写一个CSS,我太蠢了

前言 CSS这东西,让AI写的确有点难度,毕竟它写出来的东西,没办法直接预览,这是其次。重要的是CSS这东西怎么描述,不好描述啊,比如我让他给我制作一个这样的效果出来,没办法描述,所以…...

华为OD题目:分奖金

分奖金 知识点栈时间限制: 1s 空间限制: 256MB 限定语言: 不限 题目描述: 公司老板做了一笔大生意,想要给每位员工分配一些奖金,想通过游戏的方式来决定每个人分多少钱。 按照员工的工号顺序,每个人随机抽取一个数字。按照工号的顺序往后排列…...

【算法题】2401. 最长优雅子数组

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 给你一个由 正 整数组成的数组 num…...

【Vue】Vue快速入门

Vue快速入门 Vue.js的引入 要先有一个vue.js文件&#xff0c;可以在vue官网下载&#xff0c;将其复制到项目中并在html页面中进行引入&#xff1a; 在head标签内引入&#xff0c;src内是vue的路径 <!-- 引入vue.js--><script language"JavaScript" s…...

二本菜鸡,颓废两年的自我救赎

大家好&#xff0c;我是帅地。 随着校招的结束&#xff0c;帅地的星球里也有不少小伙伴前来报喜&#xff0c;今天这篇&#xff0c;是星球一个颓废两年同学的自我救赎之路&#xff0c;我觉得他的经历和很多人一样&#xff0c;前两年可能就颓废了&#xff0c;后面才后知后觉&…...

Spring boot 常用注解

SpringBootApplication&#xff1a;用于启动Spring Boot应用程序的主类上&#xff0c;组合了Configuration、EnableAutoConfiguration和ComponentScan三个注解。 RestController &#xff1a;修饰类&#xff0c;使用RestController注解的Controller中的方法默认返回值都会以JS…...

mysql从零开始(05)----锁

全局锁 使用 # 启用全局锁 flush tables with read lock # 释放全局锁 unlock tables开启全局锁后&#xff0c;整个数据库就处于只读状态了&#xff0c;这种状态下&#xff0c;对数据的增删改操作、对表结构的更改操作都会被阻塞。 另外&#xff0c;当会话断开&#xff0c;全…...

《Linux 内核设计与实现》03. 进程管理

文章目录 进程描述符及任务结构分配进程描述符进程描述符的存放进程状态设置当前进程状态进程上下文进程家族树 进程创建线程在 Linux 中的实现创建线程内核线程 进程终结删除进程描述符孤儿进程 进程描述符及任务结构 内核把进程存放在任务队列&#xff08;task list&#xf…...

深入探究HDFS:高可靠、高可扩展、高吞吐量的分布式文件系统【上进小菜猪大数据系列】

上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货。 引言 在当今数据时代&#xff0c;数据的存储和处理已经成为了各行各业的一个关键问题。尤其是在大数据领域&#xff0c;海量数据的存储和处理已经成为了一个不可避免的问题。为了应…...

GIMP制作艺术字技巧

GIMP下载官网 https://www.gimp.org/downloads/ 我使用的版本 2.10.32 字体下载 https://ziyouziti.com/index-index-all.html 下载解压之后会有otf、ttf等字体文件&#xff0c;需要拷贝到gimp当前用户目录 C:\Users\用户名\AppData\Roaming\GIMP\2.10\fonts GIMP绘制字…...

Redis 布隆过滤器总结

Redis 布隆过滤器总结 适用场景 大数据判断是否存在来实现去重&#xff1a;这就可以实现出上述的去重功能&#xff0c;如果你的服务器内存足够大的话&#xff0c;那么使用 HashMap 可能是一个不错的解决方案&#xff0c;理论上时间复杂度可以达到 O(1) 的级别&#xff0c;但是…...

云基础设施安全:7个保护敏感数据的最佳实践

导语&#xff1a;云端安全防护进行时&#xff01; 您的组织可能会利用云计算的实际优势&#xff1a;灵活性、快速部署、成本效益、可扩展性和存储容量。但是&#xff0c;您是否投入了足够的精力来确保云基础设施的网络安全&#xff1f; 您应该这样做&#xff0c;因为数据泄露、…...

centos7安装nginx

1.配置环境 1).gcc yum install -y gcc2).安装第三方库 pcre-devel yum install -y pcre pcre-devel3).安装第三方库 zlib yum install -y zlib zlib-devel2.下载安装包并解压 nginx官网下载&#xff1a;http://nginx.org/en/download.html 或者 使用wget命令进行下载 wg…...

PyQt5 基础篇(一)-- 安装与环境配置

1 PyQt5 图形界面开发工具 Qt 库是跨平台的 C 库的集合&#xff0c;是最强大的 GUI 库之一&#xff0c;可以实现高级 API 来访问桌面和移动系统的各种服务。PyQt5 是一套 Python 绑定 Digia QT5 应用的框架。PyQt5 实现了一个 Python模块集&#xff0c;有 620 个类&#xff0c;…...

Java—JDK8新特性—函数式接口【内含思维导图】

目录 3.函数式接口 思维导图 3.1 什么是函数式接口 3.2 functionalinterface注解 源码分析 3.3 Lambda表达式和函数式接口关系 3.4 使用函数式接口 3.5 内置函数式接口 四大核的函数式接口区别 3.5.1 Supplier 函数式接口源码分析 3.5.2 Supplier 函数式接口使用 3.…...

【MySQL】外键约束和外键策略

一、什么是外键约束&#xff1f; 外键约束&#xff08;FOREIGN KEY&#xff0c;缩写FK&#xff09;是用来实现数据库表的参照完整性的。外键约束可以使两张表紧密的结合起来&#xff0c;特别是针对修改或者删除的级联操作时&#xff0c;会保证数据的完整性。 外键是指表…...

3. SQL底层执行原理详解

一条SQL在MySQL中是如何执行的 1. MySQL的内部组件结构1.1 Server层1.2 Store层 2. 连接器3. 分析器4. 优化器5. 执行器6. bin-log归档 本文是按照自己的理解进行笔记总结&#xff0c;如有不正确的地方&#xff0c;还望大佬多多指点纠正&#xff0c;勿喷。 1. MySQL的内部组件结…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...