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=设置自定义同步作业的名称。

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

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

相关文章

【算法与数据结构】深入解析二叉树(一)

文章目录 📝数概念及结构🌠 树的概念🌉树的表示🌠 树在实际中的运用(表示文件系统的目录树结构) 🌉二叉树概念及结构🌠概念🌉数据结构中的二叉树🌠特殊的二叉…

Spring web MVC(2)

1、RequestMapping称为路由映射(既是类注解也是方法注解提供访问路径) 2、RequestParam起到重命名的作用,也起到绑定的作用,传递集合list时会用到,多个值绑定给list,默认是必传参数如果不传参数需要设置re…

如何在Windows 10上打开和关闭平板模式?这里提供详细步骤

前言 默认情况下,当你将可翻转PC重新配置为平板模式时,Windows 10会自动切换到平板模式。如果你希望手动打开或关闭平板模式,有几种方法可以实现。​ 自动平板模式在Windows 10上如何工作 如果你使用的是二合一可翻转笔记本电脑&#xff0…

Spring, SpringBoot, SpringCloud,微服务

1,SSM (Spring+SpringMVC+MyBatis) SSM框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容),常作为数据源较简单的web项目的框架。 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,Controlle…

vue 基于elementUI/antd-vue, h函数实现message中嵌套链接跳转到指定路由 (h函数点击事件的写法)

效果如图: 点击message 组件中的 工单管理, 跳转到工单管理页面。 以下是基于vue3 antd-vue 代码如下: import { message } from ant-design-vue; import { h, reactive, ref, watch } from vue; import { useRouter } from vue-router; c…

PY32离线烧录器功能介绍,可批量烧录,支持PY32系列多款单片机

PY32离线烧录器可以对PY系列单片机进行批量烧录,现支持PY32F002A/002B/002/003/030/071/072/040/403/303芯片各封装和XL2409,XL32F001/003等芯片。PY32离线烧录器需要搭配上位机软件才能使用,上位机软件在我们官网(www.xinlinggo.…

代码随想录刷题第60天

最后一题了。最后一题是柱状图中最大的矩形https://leetcode.cn/problems/largest-rectangle-in-histogram/,和接雨水遥相呼应的一道题,我们需要找到当前遍历数字左右两边第一个小于当前数字的值,通过保证单调栈中数字为递减顺序,…

Hive集合函数 collect_set 和 collect_list 使用示例

Hive集合函数 collect_set 和 collect_list 使用示例 在Hive中, collect_set 和 collect_list 是用于收集数据并将其存储为集合的聚合 函数。以下是它们的语法: 1. collect_set(expression)- expression : 要收集的数据表达式。collect_set 函数用于将…

【软考】UML中的图之对象图

目录 1. 说明2. 图示3. 特性 1. 说明 1.对象图即object diagram2.展现了某一时刻一组对象以及它们之间的关系3.描述了在类图中所建立的事物的实例的静态快照4.对象图一般包括对象和链5.对象图展示的是对象之间关系,不存在交互,所以不是交互图 2. 图示 …

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

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

【基础计算机网络2】物理层——物理层设备

【前言回顾】 【考纲内容】 物理层设备:中继器;集线器 一、物理层设备 1.1 中继器 描述:中继器是用来扩大网络规模的最简单廉价的互连设备,中继器两端的网络部分是网段,而不是子网。使用中继器连接的几个网段仍是一…

Jmeter+ant,ant安装与配置

1.ant含义 ant:Ant翻译过来是蚂蚁的意思,在我们做接口测试的时候,是可以用来做JMeter接口测试生成测试报告的工具 2.ant下载 下载地址:Apache Ant - Ant Manual Distributions download中选择ant 下载安装最新版zip文件 3.…

阿里云国际放行DDoS高防回源IP

如果源站服务器上设置了IP白名单访问控制(如安全软件、安全组),由于设置了DDoS高防后,回源IP是高防回源IP段,您需要将DDoS高防的回源IP段的地址加入安全软件和安全组的白名单中,避免DDoS高防的回源流量被误…

导入fetch_california_housing 加州房价数据集报错解决(HTTPError: HTTP Error 403: Forbidden)

报错 HTTPError Traceback (most recent call last) Cell In[3], line 52 from sklearn.datasets import fetch_california_housing3 from sklearn.model_selection import train_test_split ----> 5 X, Y fetch_california_housing(retu…

Javascript编译原理简介

一. 传统编译语言编译原理 这一节主要简单了解下①传统编译语言的编译流程/Javascript涉及的角色和流程,与变量声明并赋值时所涉及到的②LHS查询和③RHS查询。 Javascript引擎进行编译的步骤和传统的编译语言非常相似,在某些环节可能比预想的要复杂。在…

acados_TypeError: __init__() got an unexpected keyword argument ‘winmode‘

TypeError: init() got an unexpected keyword argument ‘winmode’ 1. TypeError: init() got an unexpected keyword argument ‘winmode’ python vehicle_move_ocp.py执行完成以后,Traceback (most recent call last): File “vehicle_move_ocp.py”, line 172, in ac…

在虚拟环境中配置0.4.1版本的pytorch

家人们,使用下面方法安装pytorch的时候一定要记得关掉外网!!! 我下午浪费了几个小时安不上,就是因为没有关掉外网! QAQ 安装方法链接

发布组件到npm

1.环境准备&#xff0c;需要装好node&#xff0c;注册号npm账号,这里不做详解 2.创建编写组件和方法的文件夹package 3.在文件夹中创建需要定义的组件&#xff0c;并且加上name属性 //组件 <template><div><button>按钮组件</button></div> &…

VSSM VMamba实现

文章目录 VSSM维度变换初始化模型参数初始化模型搭建def_make_layerdef _make_downsample patch embed第一至四阶段分类器 VSSBlockdef __ init__ssm分支mlp分支 def forward VSSM Mamba实现可以参照之前的 mamba_minimal系列 论文地址&#xff1a; VMamba 论文阅读&#xff1…

css3常见选择器

使用工具 Visual Studio Code 1.CSS3基础选择器 1.1 标签选择器 1.2.1 标签选择器的语法 一个完整的HTML5页面是由很多不同的标签组成的&#xff0c;而标签选择器则决定标签应采用的CSS样式&#xff0c;语法如下:标签名{ 属性1&#xff1a;属性值1&#xff1b; 属性2&…