前言
前一篇讲了kafka消费数据写入MySQl, 现在开始从mysql到mysql之旅吧,_
在Flink文档中,提供connector读取源数据和把处理结果存储到外部系统中。但是没有提供数据库的connector,如果要读写数据库,官网给出了异步IO(Asynchronous I/O)专门用于访问外部数据,详细可看
https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/stream/operators/asyncio.html
具体实现
由于官方没有提供mysql的API,那只能通过继承RichSourceFunction,重写里面的方法,具体如下:
- 读取mysql的类:
package com.hy.mysql2mysql;
import com.hy.flinktest.utils.DbUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.functions.source.RichSourceFunction;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* ClassName: ReadMysqlResoure
* Description: 从mysql获取数据resoure
*
* @Author: dengchangshi
* @Date: 2020/9/24 9:33
*/
@Slf4j
public class ReadMysqlResoure extends RichSourceFunction<Tuple2<String,String>> {
private Connection connection = null;
private PreparedStatement ps = null;
//@Override
//该方法主要用于打开数据库连接,下面的ConfigKeys类是获取配置的类
private void open() throws Exception {
//super.open(parameters);
log.info("获取数据库连接");
connection = DbUtil.getConnection();
ps