Apache Paimon 的 CDC Ingestion 概述

CDC Ingestion
1)概述

Paimon支持schema evolution将数据插入到Paimon表中,添加的列将实时同步到Paimon表,并且无需重启同步作业。

目前支持的同步方式如下

  1. MySQL Synchronizing Table: 将MySQL中的一个或多个表同步到一个Paimon表中。
  2. MySQL Synchronizing Database: 将整个MySQL数据库同步到一个Paimon数据库中。
  3. Program API Sync: 自定义DataStream输入同步到一个Paimon表中。
  4. Kafka Synchronizing Table: 将一个Kafka的Topic的表同步到一个Paimon表中。
  5. Kafka Synchronizing Database: 将一个包含多个表的Kafka的Topic或包含一个表的多个Topic同步到一个Paimon数据库中。
  6. MongoDB Synchronizing Collection: 将MongoDB的一个集合同步到一个Paimon表中。
  7. MongoDB Synchronizing Database: 将整个MongoDB数据库同步到一个Paimon数据库中。
  8. Pulsar Synchronizing Table: 同步一个Pulsar的Topic的表到一个Paimon表中。
  9. Pulsar Synchronizing Database: 将一个包含多个表的Pulsar的Topic或包含一个表的多个Topic同步到一个Paimon数据库中。

什么是 Schema Evolution (模式演变)

假设有一个名为tableA的MySQL表,它有三个字段:field_1field_2field_3,想将此MySQL表加载到Paimon时,可以在Flink SQL中执行如下操作,或使用MySqlSyncTableAction。

Flink SQL:

在Flink SQL中,如果在插入后更改MySQL表的表模式(表结构),表模式更改将不会同步到Paimon。

在这里插入图片描述

MySqlSyncTableAction:

在MySqlSyncTableAction中,如果在摄取后更改MySQL表的表模式,表模式更改将同步到Paimon,新添加的field_4的数据也将同步到Paimon。

在这里插入图片描述

Schema Change Evolution(模式变化进化)

cdc Ingestion支持的模式更改行为有限,该框架无法重命名表、删除列,因此RENAME TABLEDROP COLUMN的行为将被忽略,RENAME COLUMN将添加新列。目前支持的模式更改包括:

  • 添加列。
  • 更改列类型。
    • 从字符串类型(char、varchar、text)更改为另一个长度较长的字符串类型,
    • 从二进制类型(二进制、二进制、blob)更改为另一种长度较长的二进制类型,
    • 从整数类型(tinyint、smallint、int、bigint)更改为另一个范围更广的整数类型,
    • 从浮点类型(浮动,双)更改为另一个范围更广的浮点类型。

Computed Functions(计算函数)

FunctionDescription
year(date-column)Extract year from a DATE, DATETIME or TIMESTAMP (or its corresponding string format). Output is an INT value represent the year.
month(date-column)Extract month of year from a DATE, DATETIME or TIMESTAMP (or its corresponding string format). Output is an INT value represent the month of year.
day(date-column)Extract day of month from a DATE, DATETIME or TIMESTAMP (or its corresponding string format). Output is an INT value represent the day of month.
hour(date-column)Extract hour from a DATE, DATETIME or TIMESTAMP (or its corresponding string format). Output is an INT value represent the hour.
minute(date-column)Extract minute from a DATE, DATETIME or TIMESTAMP (or its corresponding string format). Output is an INT value represent the minute.
second(date-column)Extract second from a DATE, DATETIME or TIMESTAMP (or its corresponding string format). Output is an INT value represent the second.
date_format(date-column,format)Convert date format from a DATE, DATETIME or TIMESTAMP (or its corresponding string format). ‘format’ is compatible with Java’s DateTimeFormatter String (for example, ‘yyyy-MM-dd’). Output is a string value in converted date format.
substring(column,beginInclusive)Get column.substring(beginInclusive). Output is a STRING.
substring(column,beginInclusive,endExclusive)Get column.substring(beginInclusive,endExclusive). Output is a STRING.
truncate(column,width)truncate column by width. Output type is same with column.If the column is a STRING, truncate(column,width) will truncate the string to width characters, namely value.substring(0, width). If the column is an INT or LONG, truncate(column,width) will truncate the number with the algorithm v - (((v % W) + W) % W). The redundant compute part is to keep the result always positive. If the column is a DECIMAL, truncate(column,width) will truncate the decimal with the algorithm: let scaled_W = decimal(W, scale(v)), then return v - (v % scaled_W).
Special Data Type Mapping(数据类型映射)
  1. 默认情况下,MySQL TINYINT(1)类型将映射到Boolean。如果想像MySQL一样在其中存储数字(-128~127),可以指定类型映射选项tinyint1-not-bool(使用--type_mapping),那么该列将映射到Paimon表中的TINYINT。
  2. 可以使用类型映射选项to-nullable(使用--type_mapping)来忽略所有NOT NULL约束(主键除外)。
  3. 可以使用类型映射选项to-string(使用--type_mapping)将所有MySQL数据类型映射到字符串。
  4. 可以使用类型映射选项char-to-string(使用--type_mapping)将MySQL CHAR(长度)/VARCHAR(长度)类型映射到STRING。
  5. 可以使用类型映射选项longtext-to-bytes(使用--type_mapping)将MySQL LONGTEXT类型映射到BYTES。
  6. MySQL BIGINT UNSIGNEDBIGINT UNSIGNED ZEROFILLSERIAL将默认映射到DECIMAL(20, 0)可以使用类型映射选项bigint-unsigned-to-bigint(使用--type_mapping)将这些类型映射到Paimon BIGINT,但存在潜在的数据溢出,因为BIGINT UNSIGNED可以存储多达20位的整数值,而Paimon BIGINT只能存储多达19位的整数值。因此,应确保使用此选项时不会发生溢出。
  7. MySQL BIT(1)类型将映射到Boolean。
  8. 使用Hive目录时,MySQL TIME类型将映射到STRING。
  9. MySQL BINARY将被映射到Paimon VARBINARY。因为二进制值在binlog中作为字节传递,因此它应该映射到字节类型(BYTES或VARBINARY)选择VARBINARY,因为它可以保留长度信息。

Custom Job Settings(自定义作业设置)

Checkpointing(检查点)

使用-Dexecution.checkpointing.interval=启用检查点并设置时间间隔,对于0.7及更高版本,如果尚未启用检查点,Paimon将默认启用检查点,并将检查点间隔设置为180秒。

Job Name

使用-Dpipeline.name=设置自定义同步作业的名称。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win11系统qtcreator构建运行程序首次启动卡顿(win11首次启动应用程序卡顿)

首先可以参考一下这个博客:为什么win11系统开机后第一次打开一个软件很慢,关闭进程重新打开速度就正常了,该怎样解决呢? - 知乎 经过上述博客,但是我没有完全解决,这里说一下自己的方法: 打开任…

ArrayList 和 LinkedList 有什么区别?

1、典型回答 ArrayList 和 LinkedList 是 Java 中常用的集合类,它们都实现了 List 接口,如下图所示: 但二者有以下几点不同: 1、底层数据结构实现不同: ArrayList 底层使用数组实现,它通过一个可调整大小…

泽众云真机-机型支持ADB调试功能即将上线

最近云真机平台在线客服,收到很多咨询关于ADB调试功能,什么时候能更新?据小编所知,正在升级之中,有一块专门为了解决ADB调试功能提前准备,升级网络硬件设备,目前平台的功能已开发完成&#xff0…

Python Web开发记录 Day8:Django part2 部门管理

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1、部门列表2、模板的继承3、添加部门4、编辑部…

【Leetcode每日一刷】顺/逆时针旋转矩阵 |48. 旋转图像、矩阵的螺旋遍历 |54. 螺旋矩阵

一、48. 旋转图像 1.1:题目 48. 旋转图像 1.2:解题思路 题型:顺/逆时针旋转矩阵; ❗❗核心思想/ 关键:不可暴力模拟,先镜像,后水平翻转 这题的意思很简单,就是让我们把矩阵顺时…

解决内网环境预览ArcGIS地图服务

目录 背景分析解决思路操作步骤1、登录ArcGIS Server后台修改 2、将预览服务请求资源部署到内网①下载ArcGIS API for JavaScript 库②修改ArcGIS API for JavaScript 库③映射ArcGIS API for JavaScript 库④验证ArcGIS API for JavaScript 映射3、验证ArcGIS Server的服务 背…

unity3d Animal Controller的Animal组件中Speeds,States和modes基础部分理解

Speeds 速度集是修改你可以做的原始动画,增加或减少运动,旋转,或动画速度。它们与 州 所以,当动物在运动状态下,在飞行或游泳时,你可以有不同的速度 如果你的性格动画是 (已到位), 你一定要调整速度 位置 和 旋转 每一种的价值观 速度装置 …否则,它们不会移动或旋转。 每个速…

C#,图论与图算法,图着色问题(Graph Coloring)的威尔士-鲍威尔(Welch Powell Algorithm)算法与源代码

Welsh, D.J.A. and Powell, M.B. (1967) An Upper Bound for the Chromatic Number of a Graph and Its Application to Timetabling Problems. 《The Computer Journal》, 10, 85-86. 《The Computer Journal》 1 图着色算法概述 1967年,Welsh和Powell算法引入了…

【机器学习】AI训练,为什么需要GPU?【源码独家】GPU池化平台 AI训练平台 AI推理平台

随着由ChatGPT引发的人工智能热潮,GPU成为了AI大模型训练平台的基石,甚至是决定性的算力底座。为什么GPU能力压CPU,成为炙手可热的主角呢? 要回答这个问题,首先需要了解当前人工智能(AI,Artific…

【计算机图形学】End-to-End Affordance Learning for Robotic Manipulation

对RLAfford:End-to-End Affordance Learning for Robotic Manipulation的简单理解 1. 为什么要做这件事 在交互环境中学习如何操纵3D物体是RL中的挑战性问题。很难去训练出一个能够泛化到具有不同语义类别、不同几何形状和不同功能物体上的策略。 Visual Afforda…

前端接口防止重复请求实现方案

虽然大部分的接口处理我们都是加了loading的,但又不能确保真的是每个接口都加了的,可是如果要一个接口一个接口的排查,那这维护了四五年的系统,成百上千的接口肯定要耗费非常多的精力,根本就是不现实的,所以…

webpack5零基础入门-7webpack修改输出文件目录

1.修改output中的path后打包 path: path.resolve(__dirname, dist/js),//所有文件的输出目录 可以看到dist目录下多了个js目录 但所有文件都在js目录中 我们想要的是根据不同的资源进行分类很显然这样不行 从这里可以看出path是所有文件的输出目录 2.修改output中的filename…

CVPR2024 | 大核卷积新高度101x101,美团提出PeLK

https://arxiv.org/pdf/2403.07589.pdf 本文概述 最近,一些大核卷积网络以吸引人的性能和效率进行了反击。然而,考虑到卷积的平方复杂度,扩大内核会带来大量的参数,而大量的参数会引发严重的优化问题。由于这些问题,当…

Vue手写模拟步骤条

效果图&#xff1a; 如果要使用element的步骤条就需要强行修改样式&#xff0c;参考之前的那篇步骤条。这里我采用手写div 代码&#xff1a; 思路是给最外层的div一个左边框&#xff0c;给里面的step-item设置左边框为图片&#xff0c;通过定位来移动。 <div class"m…

opencv中的图像均值模糊—blur

平均模糊是通过对图像的每个像素及其周围像素的值求平均来实现的。 blur函数通过计算输入图像image中每个像素及其邻域内像素的平均值来工作。 // 图像卷积 void QuickDemo::Conv_image_demo(Mat &image) {Mat dst;blur(image, dst, Size(3, 3), Point(-1, -1));// Point(…

增删卜易——八宫六十四卦

之前看倪海厦的《天纪》笔记里面提到了六十四卦世应,觉得不知道这个世应是啥意思。很长时间就没看了,偶然间看到了张文江教授写的一本书《潘雨廷先生谈话录》提到了《卜筮正宗》,“卜筮最后的判断是非理性转义,其他一切都只是形式”,“明人的著作,从京氏易出,如今天几日…

#微信小程序(一个emo文案界面)

1.IDE&#xff1a;微信开发者工具 2.实验&#xff1a;一个emo文案界面 &#xff08;1&#xff09;最好使用rpx &#xff08;2&#xff09;图片宽度占不满&#xff0c;在CSS中设置width为100% &#xff08;3&#xff09;imag图片全部为网页链接图片 3.记录 4.代码 index.htm…

【图论】计算图的n-hop邻居个数,并绘制频率分布直方图

计算图的n-hop邻居个数&#xff0c;并绘制频率分布直方图 在图论中&#xff0c;n-hop邻居&#xff08;或称为K-hop邻居&#xff09;是指从某个顶点出发&#xff0c;通过最短路径&#xff08;即最少的边数&#xff09;可以到达的所有顶点的集合&#xff0c;其中n&#xff08;或…

[linux]信号处理:信号编码、基本API、自定义函数和集合操作的详解

一、信号的概述 1、定义 信号是 Linux 进程间通信的最古老的方式。信号是软件中断&#xff0c;它是在软件层次 上对中断机制的一种模拟&#xff0c;是一种异步&#xff08;不等待&#xff09;通信的方式 。信号可以导致一个正在运行的进程被 另一个正在运行的异步进程中断&a…

Qt_vc++崩溃日志分析

环境 Clion &#xff1a;2019.3.6 Qt &#xff1a;5.9.6&#xff08;vc2015&#xff09; 编译工具&#xff1a;vs2015 update3 崩溃日志收集 自行百度&#xff0c;会查到很多&#xff0c;一下代码仅供参考&#xff08;来自https://blog.csdn.net/weixin_45571586/article/…