一、背景

微批治理任务分多个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表写入和微批治理冲突,如何保证治理准确性的更多相关文章

  1. 数据库调优过程(二):找到IO不存在问题,而是sqlserver单表写入IO瓶颈

    物理机上测试IO是否为瓶颈: 使用一个死循环insert into测试数据库最大写入速度: use [iTest]; declare @index int; ; begin ; INSERT into ...

  2. SWUST OJ 1012哈希表(链地址法处理冲突)

    哈希表(链地址法处理冲突) 1000(ms) 10000(kb) 2676 / 6911 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法.建立链表的时候采用尾插法 ...

  3. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  4. 微服务---Eureka注册中心(服务治理)

    在上一篇的初识SpringCloud微服务中,我们简单讲解到服务的提供者与消费者,当服务多了之后,会存在依赖与管理之间混乱的问题,以及需要对外暴露自己的地址,为了解决此等问题,我们学习Eureka注册 ...

  5. python操作mysql数据库读取一个数据库的表写入另一个数据库

    写这个肯定是工作需要了,不啰嗦,直接说事 我现在有两台主机,一台是公司主机,一台是客户主机,要求把公司主机上的三个表同步到客户主机上的数据库 注意是同步,首先就得考虑用linux定时任务或者主从复制, ...

  6. 注册表写入自定义协议,网页打开exe

    新建文件:Register.reg,写入代码: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\exe1] @="exe1 P ...

  7. C语言操作注册表 写入 读取信息

    #include <stdio.h>#include <windows.h>int main(void){char regname[]="Software\\Micr ...

  8. [置顶] 【VB.NET2010】注册表写入方法

    这里,以添加启动项为例: Imports Microsoft.Win32 Imports System.Reflection.Assembly   Private Sub SetAuto_Click( ...

  9. spring cloud微服务三:Eureka服务治理之注册服务提供者及服务的发现和消费

    当服务注册中心成功建立以后,就需要有服务的注册和消费,否则这个服务注册中心就没有了存在的意义,而实际上,一个简单的服务注册也是非常简单的,仅仅需要实现四部曲就好. 首先,还是建立一个基本的spring ...

  10. 治理Go模块 服务治理 中台业务 Golang的net.Conn接口,double close

    小结: 1.中台业务 前台业务 快车.专车.顺风车,在滴滴这些业务线叫做前台服务,他们有一些共同的特性,都有司机信息,订单的状态,收银,账号等等这些业务逻辑,我们会把专门的业务逻辑集合起来,形成专职的 ...

随机推荐

  1. Ubuntu无法SSH登陆的解决方案

    1. 连接时出现提示 ssh_exchange_identification 问题提示: ssh_exchange_identification: read: Connection reset by ...

  2. 一套以用户体验出发的.NET8 Web开源框架

    前言 今天大姚给大家分享一套以用户体验出发的.NET8 Web开源框架:YiFramework. 项目介绍 YiFramework是一个基于.NET8 + Abp.vNext + SqlSugar 的 ...

  3. manim边做边学--淡入淡出

    本篇介绍Manim中的淡入和淡出动画效果. 淡入FadeIn 主要用于让对象以渐变的方式在场景中显现. 它的特点是视觉上柔和过渡,能自然地引导观众注意新出现的元素. 淡出FadeOut 则是使对象逐渐 ...

  4. ArkTs布局入门02——弹性布局(Flex)

    1.概述 弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列.对齐和分配剩余空间.容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为 ...

  5. Flutter之GetX之路由管理

    GetX之路由管理 GetX有一套完整的路由管理,并且不需要context上下文,API非常简洁 直接导航 导航到新的页面 Get.to(NextScreen()); 返回,此方法可以用于关闭Snac ...

  6. 中电金信新捷报:银行客户资源管理领域No.1

    春暖花开,捷报频传 近日,中电金信 客户关系管理系统(CRM) 接连中标 让我们共同见证这波喜讯 01 中电金信凭借优秀的解决方案和丰富的服务案例经验,成功中标某全国性股份制银行同业CRM实施服务采购 ...

  7. 零售经营“新赛道” ——基于手机银行APP专区调研的客群精细化运营分析报告

    ​ 随着银行业竞争的不断深入及新客户增量日渐"到顶",各家银行的客群竞争逐渐由"跑马圈地"进入"精耕细作"的新阶段,在客群精准化服务方面不断 ...

  8. 【Vue】学习笔记:Vue组件

    文末有我看的这个视频的链接. 目录 组件注册 全局注册 组件基础 组件命名规则 template选项 单项数据流 data选项 局部注册 单独配置组件的选项对象 ES6对象属性简写 组件通信 父组件向 ...

  9. Win11telnet服务怎么开启详细介绍

    很多用户想知道在windows11电脑中要如何开启telnet服务,用户这时候是打开windows11电脑的设置,接着点击应用设置中的可选功能,然后点击更多windows功能就能看到telnet客户端 ...

  10. Qt编写嵌入式linux输入法/支持自定义词语和繁体/支持wayland和watson/纯QWidget/界面精美可换肤

    一.功能特点 纯QWidget编写,原创输入法机制,没有任何第三方动态库的依赖. 支持各种Qt版本,包括Qt4.Qt5.Qt6及后续版本. 支持各种编译器,包括mingw.msvc.gcc.clang ...