背景
大数据处理技术现今已广泛应用于各个行业,为业务解决海量存储和海量分析的需求。但数据量的爆发式增长,对数据处理能力提出了更大的挑战,同时对时效性也提出了更高的要求。业务通常已不再满足滞后的分析结果,希望看到更实时的数据,从而在第一时间做出判断和决策。典型的场景如电商大促和金融风控等,基于延迟数据的分析结果已经失去了价值。
如何构建一个统一的数据湖存储,并在其上进行多种形式的数据分析,成了企业构建大数据生态的一个重要方向。如何快速、一致、原子性地在数据湖存储上构建起 Data Pipeline,成了亟待解决的问题。
下载flink-sql-connector-mysql-cdc
, flink-sql-connector-kafka
,flink-sql-connector-hive
到 /usr/lib/flink/lib/
|
|
Flink1.11引入了CDC的connector,通过这种方式可以很方便地捕获变化的数据,大大简化了数据处理的流程。Flink1.11的CDC connector主要包括:MySQL CDC
和Postgres CDC
,同时对Kafka的Connector支持canal-json
和debezium-json
以及changelog-json
的format。
简介
Flink CDC Connector 是ApacheFlink的一组数据源连接器,使用变化数据捕获change data capture (CDC))从不同的数据库中提取变更数据。Flink CDC连接器将Debezium集成为引擎来捕获数据变更。因此,它可以充分利用Debezium的功能。
特点
- 支持读取数据库快照,并且能够持续读取数据库的变更日志,即使发生故障,也支持exactly-once 的处理语义
- 对于DataStream API的CDC connector,用户无需部署Debezium和Kafka,即可在单个作业中使用多个数据库和表上的变更数据。
- 对于Table/SQL API 的CDC connector,用户可以使用SQL DDL创建CDC数据源,来监视单个表上的数据变更。
使用场景
- 数据库之间的增量数据同步
- 审计日志
- 数据库之上的实时物化视图
- 基于CDC的维表join
Flink提供的 table format
Flink提供了一系列可以用于table connector的table format,具体如下:
Formats | Supported Connectors |
---|---|
CSV | Apache Kafka, Filesystem |
JSON | Apache Kafka, Filesystem, Elasticsearch |
Apache Avro | Apache Kafka, Filesystem |
Debezium CDC | Apache Kafka |
Canal CDC | Apache Kafka |
Apache Parquet | Filesystem |
Apache ORC | Filesystem |
使用过程中的注意点
使用MySQL CDC的注意点
如果要使用MySQL CDC connector,对于程序而言,需要添加如下依赖:
|
|
如果要使用Flink SQL Client,需要添加如下jar包:flink-sql-connector-mysql-cdc-1.0.0.jar,将该jar包放在Flink安装目录的lib文件夹下即可。
之前, mysql 中需加入配置
|
|
重启mysql.
mysql-cdc的操作实践
创建MySQL数据源表
在创建MySQL CDC表之前,需要先创建MySQL的数据表,如下:
|
|
Flink SQL Cli创建CDC数据源
启动 Flink 集群,再启动 SQL CLI,执行下面命令:
|
|
在Flink SQL Cli中查询该表的数据:result-mode: tableau,+表示数据的insert
在SQL CLI中创建订单详情表:
|
|
查询结果如下:
执行JOIN操作:
|
|