flink cdc笔记(二):flink cdc的两种开发方式
支持两种开发方式:SQL和DataStream的方式
1,sql的方式
Mysql和oracle在cdc sql中的数据类型映射
MySQL CDC Connector — Flink CDC documentation
MySQL type |
Flink SQL type |
TINYINT |
TINYINT |
SMALLINT |
SMALLINT |
INT |
INT |
BIGINT |
BIGINT |
BIGINT UNSIGNED |
DECIMAL(20, 0) |
REAL |
FLOAT |
DOUBLE |
DOUBLE |
NUMERIC(p, s) |
DECIMAL(p, s) |
NUMERIC(p, s) |
STRING |
BOOLEAN |
BOOLEAN |
DATE |
DATE |
TIME [(p)] |
TIME [(p)] |
TIMESTAMP [(p)] |
TIMESTAMP [(p)] |
CHAR(n) |
CHAR(n) |
VARCHAR(n) |
VARCHAR(n) |
BIT(n) |
BINARY(⌈n/8⌉) |
Oracle type |
Flink SQL type |
NUMBER(p, s <= 0), p - s < 3 |
TINYINT |
NUMBER(p, s <= 0), p - s < 5 |
SMALLINT |
NUMBER(p, s <= 0), p - s < 10 |
INT |
NUMBER(p, s <= 0), p - s < 19 |
BIGINT |
NUMBER(p, s <= 0), 19 <= p - s <= 38 |
DECIMAL(p - s, 0) |
NUMBER(p, s > 0) |
DECIMAL(p, s) |
NUMBER(p, s <= 0), p - s > 38 |
STRING |
FLOAT |
FLOAT |
DOUBLE PRECISION |
DOUBLE |
NUMBER(1) |
BOOLEAN |
DATE |
TIMESTAMP [(p)] [WITHOUT TIMEZONE] |
TIMESTAMP [(p)] WITH TIME ZONE |
TIMESTAMP [(p)] WITH TIME ZONE |
TIMESTAMP [(p)] WITH LOCAL TIME ZONE |
TIMESTAMP_LTZ [(p)] |
CHAR(n) |
STRING |
BLOB |
BYTES |
SQL读出来的内容是的Tuple2<Boolean,Row>的格式
2,DataStream的方式
DataStream读出来的内容可以设置成JSON的格式,方便解析
{"before":null,"after":{"C_COLLECTORID":"W2","S_TIME":1655497161000,"S_NUM":{"scale":0,"value":"BA=="},"S_LASTESTTIME":1655916525000,"S_INITTIME":1655497161000,"W_WORKSHOP":null,"W_WORKCLASSID":null,"C_FACTORY":"2720"},"source":{"version":"1.5.4.Final","connector":"oracle","name":"oracle_logminer","ts_ms":1657262696008,"snapshot":"last","db":"ORCL.TEST","sequence":null,"schema":"FLINKUSER","table":"GD_WCOLLECTCURRENTSTAT","txId":null,"scn":"1135085","commit_scn":null,"lcr_position":null},"op":“c","ts_ms":1657262696008,"transaction":null}
before就是数据改变前的内容,after就是数据改变后的内容,op为c代表新增的,下面是op的对应数据改变类型
flink cdc笔记(二):flink cdc的两种开发方式相关推荐
- Java学习笔记:创建线程的两种方法
Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程
- 动态开辟二维数组的两种方案及位体
动态开辟二维数组的两种方案及位体 一.在静态二维数组中查询数据 二.动态开辟二维数组空间 1.用二级指针的方式开辟 2.用结构体的方式开辟 三.位体 先来回顾一下动态开辟一位数组的方法: #inclu ...
- 用new创建一个二维数组,有两种方法,是等价的
//用new创建一个二维数组,有两种方法,是等价的 一: int (*p)[10] = new int[5][10]; 二: int **p ...
- 微信小程序生成二维码的两种方式
微信小程序生成二维码的两种方式 2020/11/10 第一种,利用网络api自动生成 <image class="xin-erma" src="{{'https:/ ...
- Java生成二维码的两种方法
本文介绍Java生成二维码的两种方法,这两种方法都依赖于google提供的二维码依赖包. 一种是自己写工具类,代码可以网上抄. 另一种是使用hutool第三方工具类的依赖包,不用自己抄代码. 一.自定 ...
- Flink 笔记二 Flink的State--状态原理及原理剖析
1.状态类型 State按照是否有key划分为KeyedState和OperatorState Keyed State:KeyedStream流上的每一个Key都对应一个State (1)Keyed ...
- 利用jquery的qrcode.js插件生成二维码的两种方式的使用
2019独角兽企业重金招聘Python工程师标准>>> 利用jquery的qrcode.js插件生成二维码的额两种方式,canvas(即画布)方式和table方式(原文地址http: ...
- javaweb学习总结(二十一)——JavaWeb的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- javaweb(二十一)——JavaWeb的两种开发模式
一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负 ...
最新文章
- 借助联合体union的特性实现检测当前计算机环境采用的是大端模式还是小端模式
- asp是什么文件?html和asp的区别?(HTML是客户端语言,主要用于创建静态网页;asp是服务器端语言,用于设计用户交互式页面或动态页面)
- [Vue.js]实战 -- 电商项目(四)
- centos6.9负载均衡方案完整配置(lvs+keepalived+pxc+nfs+业务系统)
- iOS利用HealthKit框架从健康app中获取步数信息
- PGPDesktopWin32-10.2.0 加密与签名-软件实验8
- linux 卸载docker 离线_Linux环境安装、卸载Docker
- 下载eclipse太慢怎么办?
- 343.整数拆分(力扣leetcode) 博主可答疑该问题
- android版本4.4.2导航,天敏D8+_rk3288_Android_4.4.2_kiui7_蓝光导航极速版
- JSP数据库增删改查
- linux启动supervisord服务,supervisord进程管理服务
- codeforces-379C. New Year Ratings Change
- Nginx从入门到精通(笔记)
- C语言自定义类型——枚举类型讲解
- 讲理论,重实战,腾达内部SpringBoot王者晋级之路全彩小册开源
- 树选择排序(Tree Selection Sorting)介绍
- jenkins忘记账号密码,元芳,你怎么看?
- _Generic示例
- 手把手教你编写一个音乐播放器