一、前言
此次flink sql 整合 jdbc整合(以mysql为例) 主要是能在flink sql中读写 mysql表中的数据
flink 1.11.0
主要参考官网:https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/jdbc.html
二、主要步骤
1.添加jdbc依赖到flink sql客户端
参照官网需要添加如下两个jar包
添加上述两个包到flink 的lib目录下
重启flink 集群及启动 flink SQL 客户端
./start-cluster.sh
/sql-client.sh embedded
set table.sql-dialect=default; (我的客户端配置文件中设置了sql-dialect 为hive 所以要切回default )
2.在mysql中创建mysql表,flink SQL中创建flink sql表
在mysql中事先在wm数据库中创建好 ods_hot_shop表
在flink中创建ods_hot_shop表,该表的字段mysql的字段相同
建表语句如下:
CREATE TABLE ods_hot_shop (
id BIGINT,
mt_wm_poi_id STRING,
shop_name STRING,
source STRING,
platform STRING,
type STRING,
type_value STRING,
time_range STRING,
create_time STRING,
update_time STRING,
status STRING,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://192.168.25.1:3306/wm',
'table-name' = 'ods_hot_shop',
'username' = 'root',
'password' = '123456'
);
其中 table-name 的值为 要连接的JDBC表的名称(即前面在mysql中创建的ods_hot_shop表)
3.在flink sql客户端中测试读写mysql的数据
读mysql数据: 在mysql中添加 一行数据
flink sql中查询该行数据
写mysql数据: 在flink sql中往表添加 一条数据
在mysql 查询ods_hot_shop表数据,发现数据已经同步过来
4.编写代码测试读写mysql的数据
由官网中看目前JdbcCatalog 只实现 PostgresCatalog mysql 的JdbcCatalog 暂未实现,
暂时无法像 Postgres数据库那样 使用PostgresCatalog 把 Postgres数据库中的表注册进来,