浅谈hudi 的callback回调机制

news2024/11/23 21:14:26

浅谈hudi 的callback回调机制
关于hudi的write operations,hudi有4种类型,分别为upsert/insert/bulk_insert/delete[软删除/硬删除]。
了解hudi的都知道,hudi有一个核心的机制就是timeline,hudi的instantDTO包含action(动作),ts(时间),state(状态)。
在这里插入图片描述

action主要包括:
commits:提交表示将一批记录原子写入表中;
cleans:删除表中不再需要的旧版本文件的后台活动;
delat_commite:增量提交指的是将一批记录原子写入 MergeOnRead 类型的表中,其中一些/所有数据可以只写入增量日志;
compaction:协调 Hudi 内差异数据结构的后台活动,例如:将更新从基于行的日志文件移动到列格式。 在内部,压缩表现为时间轴上的特殊提交;
ROLLBACK:表示提交/增量提交不成功并回滚,删除在此类写入期间产生的任何部分文件.
SAVEPOINT:将某些文件组标记为“已保存”,这样清理器就不会删除它们。 在发生灾难/数据恢复情况时,它有助于将表恢复到时间线上的某个点。
参考官方文档如下。
在这里插入图片描述

关于hudi 的数据actions后,有几种数据状态,状态包括如下:
REQUESTED:表示已计划但尚未启动的操作;
INFLIGHT:表示当前正在执行该操作;
已完成:表示时间轴上的操作已完成;

下面重点看一下hudi的callback。
目前hudi的commit的回调提供了http/kafka/plusar的方案,具体配置信息可以参考官方文档。
以下主要看一下阅读一下源码
在这里插入图片描述

接口HoodieWriteCommitCallback,主要发布了call的方法。

回调发送内容数据为HoodieWriteCommitCallbackMessage。
主要包括了提交时间、表名、表存储路径、hudi write的统计信息.可以下钻分析一下HoodieWriteState实体类
在这里插入图片描述

http的callback方式的实现类
在这里插入图片描述

官方文档的配置信息主要是针对HoodieWriteCommitHttpCallbackClient生成的,可以阅读一下该类,核心是send方法
在这里插入图片描述

在这里插入图片描述

HoodieWriteCommitKafkaCallback,将callbackmessage类型数据转成json

在这里插入图片描述

接下来看hudi的对接引擎是怎么用的

抽象类witeclient的
在这里插入图片描述

在commitStats方法中,最后提交成功后进行回调机制

在这里插入图片描述

举例查看flink write
在这里插入图片描述

**

总结:

**
1、根据内部需求可以自定义实现回调接口,比如实现dubbo的方案,或者针对该方案可以进行二次开发改造,
2、实时和离线数仓如何去结合回调机制进行整个数仓的建设
问:离线调度的方案该如何实现,多个commit,下游该如何去识别该批任务已经完成了。
答:计算引擎+hudi实现任务计算,数据任务回调发送到下游数据。根据HoodieWriteCommitCallbackMessage,数据进行合并解析。在下有一个任务启动前,判断是否上一个任务已经完成了。
3、针对2的问题,上游任务完成状态的标准判定。
有时间判断的标准,按照上下游的时间是否合理,定时促发任务。
如果上游数据有一个延迟,如何去控制。全量和增量解法,如果是全量的数据,就会存在数据丢失,增量存在数据延迟。可以不采取定时促发的机制,轮训监听上游数据成功。可以借用调度器方案(海豚调度器)的dag的方案
4、针对实时方案,不需要依赖数据处理,可以通过监控进行数据异常和延迟判断。
5、在commit执行到一半是异常出错后,应该需要回滚。否则数据丢失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux常用命令总结(建议收藏)

文章目录一、文件管理1、cat:查看文件内容案例1:输出内容行数2、chmod:是控制用户对文件的权限的命令案例1::将user文件修改成用户、组、其他用户都可以读写可执行的权限3、diff:用于比较文件的差异4、find…

ELK (一)部署ELK+Filebeat日志收集分析系统

说明:此安装流程只适用于8.0.0以下的版本 1. ElasticSearch 部署 1.1 下载ElasticSearch的wget指令: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz1.2 解压安装包到指定目录 指定解压缩到 …

【指纹识别】指纹识别【含GUI Matlab源码 586期】

⛄一、指纹识别简介 1 指纹识别的引入和原理 1.1 指纹的基本知识 指纹,由于其具有终身不变性、唯一性和方便性,已几乎成为生物特征识别的代名词。指纹是指人的手指末端正面皮肤上凸凹不平产生的纹线。纹线有规律的排列形成不同的纹型。纹线的起点、终点…

SpringBoot+Vue实现前后端分离的旅游网站

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

【Effective_Objective-C_2对象,消息,运行期1】

文章目录前言6 理解”属性“这一概念定义变量不兼容现象的出现解决不兼容现象-Property使用属性更便捷属性特质原子性读写权限内存管理语义方法名原子性和非原子性要点总结7 在对象内部尽量直接访问实例变量要点总结8 理解“对象等同性” 和 isEqual“” 判断的依据“isEuqalTo…

RTL8380M/82M管理型交换机系统软件操作指南四:QoS/服务质量

接下来对QoS进行详细的描述,主要包括以下七大内容:QoS概述、功能简介、拥塞管理、策略分类、调度方式、优先级映射配置、QoS端口配置. 1.1 QoS概述 QoS(Quality of Service,服务质量)是用各种手段解决网络延迟和阻塞等…

[附源码]Python计算机毕业设计SSM基于Java动漫论坛系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

业务模型设计

业务模型设计业务模型设计统一语言、术语统一单词业务数据表模型规范数据库范式几个经验业务模型索引主键: 自增id、雪花id、和uuid 差别创建表字符集设置myisam 和 innodb 区别业务模型设计 统一语言、术语 定义:需求分析的过程(系统目标、…

001、【C语言编程题目】猴子吃桃问题

001、【题目】猴子吃桃问题 猴子吃桃问题:猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个; 第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天…

艾美捷针对性检测—游离维多珠单抗ADA水平检测试剂盒

艾美捷游离维多珠单抗ADA水平检测试剂盒可靠地测定游离ADA针对维多利单抗(如ENTYVIO)). 风湿因子的联合测定或排除不规则抗体。连同确定维多利单抗的活性物质浓度由IDK监测仪指示 维多利单抗免费ADA ELISA,主治医师有可能陪同治疗并在早期阶段…

用Python作一条已知曲线的等距曲线

参考资料: 该如何作一条已知曲线的等距曲线? - 知乎 等距线_百度百科 目录 1.等距线 2.数学推导 3.示例 4.代码与结果 1.等距线 等距线(equidistant line)亦称平行曲线,一种平面曲线,即由一已知曲线…

准备Plan B 如何设计兜底方案

对于很多秒杀系统而言,在诸如双十一这样的大流量的迅猛冲击下,都曾经或多或少发生过宕机的情况。当一个系统面临的大流量时,它其实很难单靠自身调整来恢复状态,你必须等待流量自然下降或者认人为地把流量切走才行,这无…

Android OpenGL ES 学习(九) – 坐标系统和实现3D效果

OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投影 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用…

高通Ride软件开发包使用指南(7)

高通Ride软件开发包使用指南(7)6.5 构建 x86 Ubuntu SDK6.6端到端可视化6.7 x86 Ubuntu上的功能验证6.7.1简单比特率验证6.7.2在x86笔记本上用 8xCams HEVC格式 录制 FPS6.8记录仪6.5 构建 x86 Ubuntu SDK 构建 x86 ubuntu ~/src/qride/stack-sdk$ ./ex…

十个精妙绝伦的SQL语句,说尽SQL精华

目录引子十大SQL1. 统计班级总分前十名2. 删除重复记录, 且保留一条3. 最大连续登陆天数的问题4. 计算除去部门最高工资,和最低工资的平均工资5. 计算占比和同比增长6. 算成绩7.算昨天每个城市top 10消费金额的用户,输出city_id,city_name,uid, 消费总金…

C语言刷题(3)

🐒博客名:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 目录 计算体重指数 计算三角形周长和面积 KiKi和酸奶 网购 变种水仙花 计算体重指数 描述 问题:计算BMI指数&#xff0…

安全可信 | 强墙出击!天翼云Web应用防火墙(原生版)硬核亮相!

12月9日,由中国信息通信研究院主办的“墙墙联合——云上防火墙技术沙龙”在线上顺利举行,天翼云科技有限公司研发专家吴雷分享了新标准、新需求下云Web应用防火墙(云WAF)的发展方向,并介绍了天翼云Web应用防火墙&#…

如何从 OVF 或 OVA 文件中部署虚拟机

从 OVF 或 OVA 文件中部署虚拟机 使用新建虚拟机向导从 OV F和 VMDK 文件或 OVA 文件部署虚拟机。由于 Web 浏览器的限制,OVA 部署仅限于1GB以下的文件。要部署大于1GB的 OVA 文件,请使用 tar 提取 OVA 文件并分别提供OVF和VMDK文件。 一、右键单击导航器中的‘‘虚拟机“,…

Android:远程调试WebView

目录 前言 配置WebView 手机设置 远程调试 前言 APP中使用WebView展示网页的结果可能不太理想,那么我们想调试的话就没有在浏览器当中调试方便,不过谷歌浏览器给我们提供了能远程调试的方案。 官方文档:https://developer.chrome.com…

Blazor也可以用MarkDown!Vditor-Blazor基础使用教程以及部分源码解析!Ant-Designer-Blazor

前言 Ant-Designer-Blazor组件库是一款非常好用的Blazor的UI框架库,使用很少的精力就可以搭建出一个漂亮的UI界面了。 但是Ant-Designer-Blazor中尚缺少对MarkDown组件的支持,所以只能下载Nuget包里面的一个Vditor(也是Ant-Designer的&#…