Flink-CDC 2.0
前言
实时数仓项目用到了Flink-CDC,这里记录一下学习的过程。
一、CDC简介
1.什么是CDC
CDC是Change Data Capture(变更数据获取)的简称。核心思想是监测并捕获数据库的变动(包括数据或者数据表的插入、更新以及删除等),将这些变更按发生的完成顺序完整记录下来,写入到消息中间件以供其他服务进行订阅及消费。
2.CDC的种类
CDC主要分为基于查询和基于Binlog两种方式,如下表:
基于查询的CDC | 基于Binlog的CDC | |
---|---|---|
开源产品 | Sqoop、Kafka JDBC Source | Canal、Maxwell、Debezium |
执行模式 | Batch | Streaming |
是否可以捕获所有数据变化 | 否(只能查询出最终结果) | 是(一条数据多次修改的中间过程也可以捕获) |
延迟性 | 高延迟(攒成一批的,延迟高) | 低延迟(类似于流式的,一条一条,延迟低) |
是否增加数据库压力 | 是(因为要select表) | 否 (是基于文件的) |
3.Flink-CDC开源地址
开源地址:https://github.com/ververica/flink-cdc-connectors
二、Flink-CDC案例实操
1.依赖导入
使用Flink-CDC需要先导入以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.12</artifactId>
<version>1.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_2.12</artifactId>
<version>1.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_2.12</artifactId>
<version>1.12.0</version>
</dependency>
<dependency>
<groupId>com.ververica</groupId>
<artifactId>flink-connector-mysql-cdc</artifactId>
<