Flink学习---15、FlinkCDC(CDC介绍、案例实操)

news2024/12/26 9:22:36

在这里插入图片描述
                       星光下的赶路人star的个人主页

                      未来总是藏在迷雾中让人胆怯,但当你踏入其中,便会云开雾散

文章目录

  • 1、CDC简介
    • 1.1 什么是CDC
    • 1.2 CDC的种类
    • 1.3 Flink-CDC
  • 2、FlinkCDC案例实操
    • 2.1 开启MySQL Binlog并重启MySQL
    • 2.2 FlinkSQL方式的应用
      • 2.2.1 导入依赖
      • 2.2.2 编写代码

1、CDC简介

1.1 什么是CDC

CDC是Change Data Capture(变更数据获取)的简称。核心思想是,检测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件以及其他服务进行订阅及消费。

1.2 CDC的种类

CDC主要分为基于查询和基于Binlog两种方式,以下这两种之间的区别:

基于查询的CDC基于Binlog的CDC
开源产品Sqoop、DataXCanal、Maxwell
执行模式BatchStreaming
是否可以捕获所有数据变化
延迟性高延迟低延迟
是否增加数据库压力

1.3 Flink-CDC

Flink摄取开发了Flink-cdc-connectors组件,这是一个可以直接从MySQL、PostgreSQL等数据库直接读取全量数据和增量变更数据的Source组件,
目前已经开源,开源地址:https://github.com/ververica/flink-cdc-connectors
在这里插入图片描述

2、FlinkCDC案例实操

2.1 开启MySQL Binlog并重启MySQL

vim /etc/my.cnf

在这里插入图片描述

2.2 FlinkSQL方式的应用

2.2.1 导入依赖

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-table-planner-blink-loader
</artifactId>
    <version>1.17.0</version>
</dependency>

2.2.2 编写代码

public class FlinkCDC_SQL {
    public static void main(String[] args) throws Exception {
        // TODO 1. 准备环境
        // 1.1 流处理环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);
        // 1.2 表执行环境
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);

        // TODO 2. 创建动态表
        tableEnv.executeSql("CREATE TABLE user_info (\n" +
                "id INT,\n" +
                "name STRING,\n" +
                "age INT,\n" +
                "primary key(id) not enforced\n" +
                ") WITH (" +
                "'connector' = 'mysql-cdc'," +
                "'hostname' = 'hadoop102'," +
                "'port' = '3306'," +
                "'username' = 'root'," +
                "'password' = '123456'," +
                "'database-name' = 'test'," +
                "'table-name' = 'user'" +
                ")");

        tableEnv.executeSql("select * from user_info").print();

        // TODO 3. 执行任务
        env.execute();
    }
}

运行截图:
在这里插入图片描述

MySQL表数据截图:
在这里插入图片描述

在这里插入图片描述
                      您的支持是我创作的无限动力

在这里插入图片描述
                      希望我能为您的未来尽绵薄之力

在这里插入图片描述
                      如有错误,谢谢指正;若有收获,谢谢赞美

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

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

相关文章

jadx的使用

这篇文章主要介绍下jadx的使用。 1&#xff1a;下载安装 开源地址如下&#xff1a; https://github.com/skylot/jadx 当前最新的版本是1.4.7&#xff1a; https://github.com/skylot/jadx/releases/tag/v1.4.7 2&#xff1a;使用jadx mac/linux 使用jadx-gui.windows使用…

2023年中国光模块行业研究报告

第一章 行业概况 1.1 行业简介 光模块行业是光纤通信技术发展的重要组成部分&#xff0c;作为连接光纤通信网络的基础设备&#xff0c;光模块为数据传输提供了必要的硬件支持。光模块是光纤通信系统核心器件之一&#xff0c;它包括多种模块类别&#xff0c;例如光接收模块、光…

Random与random的区别

Random与random的区别 前言一、Rondom二、rondom三、使用Rondom的好处 前言 Rondom和raodom都可以表示随机数&#xff0c;下面是详细讲解 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、Rondom Rondom是Java中的一个类&#xff0c;若需要生成随机…

在URP管线中添加ShaderMaterial自定义GUI的方法

编写GUI面板 1. 新建GUI子面板 using UnityEngine; using UnityEngine.Rendering;namespace UnityEditor.Rendering.Universal.ShaderGUI {internal class CP_XXXOutLineGUI{public static class Styles{}public struct LitProperties{public LitProperties(MaterialProperty…

速卖通,国际站测评补单用什么环境,买家账号不会被风控,F号

我们做自养号测评、补单首先要解决的就是安全性的问题&#xff0c;如果安全性解决的不了的话&#xff0c;其他的都不要再提了。目前我们的成号率可以稳定在9.8成以上&#xff0c;基本上0砍单封号 市面上的环境有&#xff1a; 1.虚拟机V2&#xff1b;三四年前的环境方案了&…

6. 加载栅格(raster)图层

文章目录 前言加载栅格(raster)图层gdalGeoTiffQGis导入tif代码添加 GeoPackageQGis导入代码导入 wms在线高德影像地图QGis添加在线高德影像代码添加 离线高德影像地图瓦片原理服务描述XML文件QGis导入离线地图代码导入 前言 本章讲述使用qgis c Api加载栅格地图数据并显示。 …

卡通人像制作就是这么简单

1、打开提示词生成器。 Prompt Generatorhttps://remaker.ai/userspace/prompt-generator/2、按下面截图设置。 3、复制英文提示。 4、打开画图链接。 https://poe.com/chat/https://poe.com/chat/ 5、输入提示词&#xff0c;按回车。 female,wide eyes,lipstick,fox ears,b…

解决一则诡异的javascript函数不执行的问题

有个vue 音乐播放器项目&#xff0c;由于之前腾讯的搜索接口没法用了&#xff0c;于是改成了别家的搜索接口。 但是由于返回数据结构不一样&#xff0c;代码重构的工作量还是挺大的&#xff1a;包括数据请求&#xff0c;数据处理&#xff0c;dom渲染&#xff0c;处理逻辑都进行…

C++算法:二叉树的序列化与反序列化

#题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xff0c;采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。…

golang的json转pb验证

基于这篇文章的最后一个代码进行验证。 https://blog.csdn.net/mijichui2153/article/details/133894403?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22133894403%22%2C%22source%22%3A%22mijichui2153%22%7D 1、准备 &…

gs_moment

ps:仅共学习&#xff0c;自用。

OpenGL —— 2.7、绘制多个自旋转的贴图正方体(附源码,glfw+glad)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库&#xff0c;该库只有一个头文件。 具体代码&#xff1a; vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec2 aUV;out vec2 outUV;uniform mat4 _modelMatrix; …

抽象数据库

在刚刚的文章中&#xff0c;完成了无范式到三级范式的过程 : 遵循原子性。即&#xff0c;表中字段的数据&#xff0c;不可以再拆分。 在满足第一范式的情况下&#xff0c;遵循唯一性&#xff0c;消除部分依赖。即&#xff0c;表中任意一个主键或任意一组联合主键&#xff0c…

计算几何+2sat:1020T3

http://cplusoj.com/d/senior/p/SS231019C 我们进行这样的转化 则0/1必选一个&#xff0c;2/3必选一个 那么就变成一个2sat问题 两三角形有交&#xff0c;则一个选&#xff0c;一个不能选 对角三角形一个选&#xff0c;一个不选。一个不选&#xff0c;一个选 三角形不合法…

体感互动游戏研发虚拟场景3D漫游

体感互动游戏是一种结合虚拟现实&#xff08;VR&#xff09;或增强现实&#xff08;AR&#xff09;技术的游戏&#xff0c;允许玩家以身体动作和姿势来与游戏互动。这种类型的游戏通常需要特殊的硬件设备&#xff0c;例如体感控制器、摄像头或传感器&#xff0c;以捕捉玩家的动…

spring cloud alibaba 集成seata

1.启动服务端 1.下载 seata-server-1.4.2 2.创建数据库 DROP DATABASE IF EXISTS ry-seata;CREATE DATABASE ry-seata DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;USE ry-seata;-- ---------------------------…

Java操作Python数据交互最佳实践

Java操作Python最佳实践 1、Java与Python的互操作性2、Java调用Python脚本及数据交互2.1、准备工作2.2、执行一段Python代码2.3、执行Python文件脚本2.4、执行Python文件中的指定方法2.5、执行含有第三方库的Python文件3、附录1、Java与Python的互操作性 在当今的软件开发领域,…

Linux服务器下装anaconda | 配置深度学习环境 | Pycharm连接远程服务器-经验总结

0 前言 推荐2个工具 WinSCP 一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件&#xff0c;并且可以直接编辑文件。 WindTerm 一个多平台开源免费的终端软件&#xff0c;用于连接服务器 一…

Redis 主从复制,哨兵,集群——(3)集群篇

目录 1. 前篇回顾 2. Redis 集群是什么&#xff1f; 3. Redis 集群的优点 4. Redis 集群的槽位概念 5. 什么是分片&#xff1f; 6. 如何找到给定key的分片&#xff1f; 7. 分片槽位的设计有什么好处&#xff1f; 8. key映射到节点的三种解决方案 8.1 哈希取余分区 8.…

SortedSet 和 List 异同点

SortedSet 在 Java 的整个集合体系中&#xff0c;集合可以分成两个体系&#xff0c;一个是 Collection 存储单个对象的集合&#xff0c;另一个是 k-v 结构的 Map 集合。 SortedSet 是 Collection 体系下 Set 接口下的派生类&#xff0c;而 Set 集合的特征是不包含重 复的元素的…