Iceberg v2表写入和微批治理冲突,如何保证治理准确性
一、背景
微批治理任务分多个job治理一张表,还有一个Flink程序每5分钟一次写入iceberg表,如治理任务划分了20个job治理一张表,在治理期间存在新的数据更新,如何保证治理准确性


二、治理时写入,快照对应信息
1、治理和写入时快照和文件变化
| snapshot_id | sequence number | manifest_file | 文件类型 | 备注 |
| 1 |
1
|
file_1
|
新增 | 数据(id=5,值=123) |
| 2 | 1 | file_1 | 旧文件 | 数据(id=5,值=123) |
| 2 | 2 | file_2 | 新增 | 新增数据(id=6) |
| 2 | 2 | file_3 | 新增 | 新增数据(id=7) |
|
3(未运行的微批治理,job2) |
2 | file_3 |
旧文件
|
数据(id=7)
|
|
3(微批治理任务,job1) |
3 | file_4(合并file_1、 file_2) |
新增
|
新增数据文件(id=5,值=123)(id=6)
分多个job治理一张表,如分两个job治理一张表。此快照为治理job1生成
|
| 4 | 2 | file_3 |
旧文件 |
数据(id=7) |
| 4 | 3 | file_4 | 旧文件 | 数据(id=5,值=123)(id=6) |
| 4 |
4
|
file_5
|
新增 | 新增数据文件(id=5,值=456) |
| 4 |
4
|
delete_file_1
|
新增 | 新增删除文件(id=5) |
| 5 |
3
|
file_4
|
旧文件 | 数据(id=5,值=123)(id=6) |
| 5 |
4
|
file_5
|
旧文件 | 数据(id=5,值=456) |
| 5 |
4
|
delete_file_1
|
旧文件 | 删除文件(id=5) |
| 5(微批治理任务,job2发现有更新,重试) |
5
|
file_6(合并file_3)
|
新增 |
提交时判断在本次治理期间有数据写入,在commit时重新拿最新快照信息,使用治理前的sequence number,然后合并后提交新快照,不会覆盖flink更新的数据。 如果微批治理期间有数据更新,则从更新之后的治理job开始,数据文件不会在合并,但是删除文件会做合并,如果历史删除文件较多,后面的治理任务会把删除文件合并。直到下次治理时小的数据文件才可以合并 |
|
|
|
|||
|
|
|
腾讯云技术小姐姐解答
微批写入时分多个job(如10个)治理一张表,在运行5个 job后有一个实时任务更新了数据,从第6个job开始会有重试。
(1)重试的机制是什么样的
重试时会refresh获取当前最新元数据metadata,在这个基础上把新的元数据manifest files等元数据整合,然后commit
(2)如何保证更新的数据不被旧数据覆盖
如何保证增量写入的更新的数据不被微批治理的旧数据覆盖: use-starting-sequence-number=true, 默认,会使得微批治理会使用治理前本身的sequence number,从而不会覆盖flink增量写入的新数据。




Iceberg v2表写入和微批治理冲突,如何保证治理准确性的更多相关文章
- 数据库调优过程(二):找到IO不存在问题,而是sqlserver单表写入IO瓶颈
物理机上测试IO是否为瓶颈: 使用一个死循环insert into测试数据库最大写入速度: use [iTest]; declare @index int; ; begin ; INSERT into ...
- SWUST OJ 1012哈希表(链地址法处理冲突)
哈希表(链地址法处理冲突) 1000(ms) 10000(kb) 2676 / 6911 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法.建立链表的时候采用尾插法 ...
- 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...
- 微服务---Eureka注册中心(服务治理)
在上一篇的初识SpringCloud微服务中,我们简单讲解到服务的提供者与消费者,当服务多了之后,会存在依赖与管理之间混乱的问题,以及需要对外暴露自己的地址,为了解决此等问题,我们学习Eureka注册 ...
- python操作mysql数据库读取一个数据库的表写入另一个数据库
写这个肯定是工作需要了,不啰嗦,直接说事 我现在有两台主机,一台是公司主机,一台是客户主机,要求把公司主机上的三个表同步到客户主机上的数据库 注意是同步,首先就得考虑用linux定时任务或者主从复制, ...
- 注册表写入自定义协议,网页打开exe
新建文件:Register.reg,写入代码: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\exe1] @="exe1 P ...
- C语言操作注册表 写入 读取信息
#include <stdio.h>#include <windows.h>int main(void){char regname[]="Software\\Micr ...
- [置顶] 【VB.NET2010】注册表写入方法
这里,以添加启动项为例: Imports Microsoft.Win32 Imports System.Reflection.Assembly Private Sub SetAuto_Click( ...
- spring cloud微服务三:Eureka服务治理之注册服务提供者及服务的发现和消费
当服务注册中心成功建立以后,就需要有服务的注册和消费,否则这个服务注册中心就没有了存在的意义,而实际上,一个简单的服务注册也是非常简单的,仅仅需要实现四部曲就好. 首先,还是建立一个基本的spring ...
- 治理Go模块 服务治理 中台业务 Golang的net.Conn接口,double close
小结: 1.中台业务 前台业务 快车.专车.顺风车,在滴滴这些业务线叫做前台服务,他们有一些共同的特性,都有司机信息,订单的状态,收银,账号等等这些业务逻辑,我们会把专门的业务逻辑集合起来,形成专职的 ...
随机推荐
- 基于Github gist的代码片段管理工具Lepton
Lepton主要功能 无限制的公共/私人片段 无限制的标签 语言组 Markdown支持 Jupyter Notebook查看器支持 macOS / Win / Linux客户端 GitHub Ent ...
- HEUCPC2021
stral Reflection 在 \([1,n]\)上支持如下操作: 操作一:学习一个新的技能--清除 \([l,r]\)内所有的陨石 操作二:给定一个点集\(k\)代表陨石出现在这些位置,询问最 ...
- fastapi 实现HTTP访问
1.概述 在使用python 时,我如何发布一个接口给外部访问, python 有 FASTAPI 和 uvicorn 实现,fastapi 是定义 api接口,uvicorn 运行服务器. 2.安装 ...
- nodejs安装和环境配置
nodejs安装和环境配置 1.下载安装node.js 官方下载地址: https://nodejs.org/en/ 下载LTS版本(长期稳定版本) 安装可以更改安装路径(我的更改是D:\Progra ...
- Acrobat Pro DC 2024.005 像word一样编辑PDF
随着数字化的推广,PDF文件凭借其强大的优势和稳定性逐渐成为各类文档交流和存储的首选格式.随之而来的是对PDF文件的阅读.编辑.转换.转曲等各种操作需求的不断增长.因此,一款强大的PDF处理软件不仅需 ...
- Spring 话题
我从来不用 spring,项目再大也不会考虑 spring 那套模式.什么依赖注入控制反转,叠床架屋,对开发和运维可以说有害无益.上文 zz Spring 是一种反模式 - Inshua - 博客园 ...
- 我们需要什么样的 ORM 框架
了解我的人都知道, 本人一直非常排斥 ORM 框架, 由于对象关系阻抗不匹配, 一直觉得它没有什么用, 操作数据库最好的手段是 sql+动态语言. 但这两年想法有了重大改变. 2013 年用 js 实 ...
- Python中所有子图标签Legend显示详解
在数据可视化中,图例(legend)是一个非常重要的元素,它能够帮助读者理解图表中不同元素的含义.特别是在使用Python进行可视化时,matplotlib库是一个非常强大的工具,能够轻松创建包含多个 ...
- 黑苹果 - 搭建python自动化测试环境
通用环境 1. 安装 xcode 从 AppStore 安装 安装完成之后,打开 xcode,同意各种协议 不用新建项目 注意: xcode下载完成后,安装的过程很慢,需要等待.我是12.5版本,差不 ...
- Maven 插件 git-commit-id-plugin,打包包含提交信息
Maven打包发布版本可能会遇到自己的提交不起作用的情况,排查比较困难,可能需要拉下服务器上包,反编译查看是否包含自己的提交记录.如果使用的是GIT作为SCM,可以使用 git-commit-id-p ...