本篇是Flink SQL实战系列文章的第四篇,主要介绍JDBC connector和mysql-cdc与Flink SQL的结合使用。数据库通常作为生产环境数据源的核心存储,Flink SQL提供了JDBC connector通过JDBC协议来支持数据库的连接,只要兼容JDBC协议的数据库都可以通过该方式,包括MySQL/PostgreSQL/TiDB等。另外,基于数据库的CDC (Change Data Capture)在实际生产中也发挥着重要的作用,Flink SQL提供了mysql-cdc connector 用来追踪MySQL数据库表的增删改操作。作为Flink SQL的核心开发者云邪和雪尽等大佬也写了不少文章来介绍jdbc和cdc connector以及changlog背后的原理,大家可以根据文章末尾的链接来仔细阅读,然后动手实践加深理解。本文中将会基于jdbc和mysql-cdc这两个connector在Flink SQL的实战,介绍的内容如下所示:
数据准备
MySQL作为Flink计算的数据源
MySQL作为Flink计算的结果存储
TiDB在Flink SQL中的使用
CDC在Flink SQL中的使用
总结
01 数据准备
本篇的数据依旧沿用第二篇中创建好的数据,对于jdbc connector的实战,继续计算点击流写到MySQL和TiDB;对于mysql-cdc connector,则需要临时创建table 和以及增删改数据,具体流程放在讲述cdc小节里面。
02 MySQL作为Flink计算的数据源
在Flink SQL实战的第二篇文章介绍过MySQL 作为维度表进行temporal table join的应用,这里不再赘述;本小节主要介绍在MySQL作为source的时候,对scan.* 参数的使用进行探索,这四个参数如下所示:
'scan.partition.column''scan.partition.num''scan.partition.lower-bound''scan.partition.upper-bound'
我们根据Flink SQL实战第二篇的广告位, 创建未配置scan相关参数的Flink MySQL table ,详细语句如下所示:
# 创建 Flink MySQl 表, 未配置scan相关的参数CREATE TABLE check_mysql_scan ( ID BIGINT,name STRING) WITH ( 'connector' = 'jdbc', 'url' = 'url', 'table-name' = 'adspace', 'username' = 'username', 'password' = 'password');# 提交查询, 通过jobGraph,来验证数据select MAX(ID) from check_mysql_scan;



我们根据Flink SQL实战第二篇的广告位, 创建配置scan相关参数的Flink MySQL table ,详细语句如下所示:
# 创建 Flink MySQl 表, 配置scan相关的参数CREATE TABLE check_mysql_scan (ID BIGINT, name STRING) WITH ( 'scan.partition.column' = 'id', 'scan.partition.num' = '3', 'scan.partition.lower-bound' = '20', 'scan.partition.upper-bound' = '100', 'connector' = 'jdbc', 'url' = 'url', 'table-name' = 'adspace', 'username' = 'username', 'password' = 'password');# 提交查询, 通过jobGraph,来验证数据select MAX(ID) from check_mysql_scan ;



本文介绍了Flink SQL中JDBC connector的使用,包括数据源和结果存储,重点讨论了MySQL和TiDB的集成。文章还探讨了CDC在Flink SQL中的应用,展示了如何实时同步数据。
最低0.47元/天 解锁文章
1447

被折叠的 条评论
为什么被折叠?



