import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
/**
* @author fl
* @date: 2021/12/21 10:02
* @description: flink cdc 监听mysql的binlog
*/
public class MysqlCdcTableApi {
public static void main(String[] args) throws Exception {
String source = "CREATE TABLE mysql_binlog (\n" +
" ID INT,\n" +
" InnerCode INT,\n" +
" MainCode INT,\n" +
" BondFullName STRING,\n" +
" BondForm INT,\n" +
" OptionType STRING,\n" +
" BondNature INT,\n" +
" PRIMARY KEY(ID) NOT ENFORCED\n" +
") WITH (\n" +
" 'connector' = 'mysql-cdc',\n" +
" 'hostname' = 'xx.xx.xx.xx',\n" +
" 'port' = '3306',\n" +
" 'username' = 'xx',\n" +
" 'password' = 'xx',\n" +
" 'database-name' = 'xx',\n" +
" 'table-name' = 'bond_basicinfon'\n" +
")";
String sink = "CREATE TABLE bond_basicinfon (\n" +
" ID INT,\n" +
" InnerCode INT,\n" +
" MainCode INT,\n" +
" BondFullName STRING,\n" +
" BondForm INT,\n" +
" OptionType STRING,\n" +
" BondNature INT\n" +
") WITH (\n" +
" 'connector' = 'print'\n" +
")";
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
EnvironmentSettings settings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env, settings);
//注册source和sink
tableEnv.executeSql(source);
tableEnv.executeSql(sink);
//数据提取
Table sourceTable = tableEnv.from("mysql_binlog");
sourceTable.insertInto("bond_basicinfon");
// 执行作业
tableEnv.execute("flink test");
}
}
flink cdc之table api
于 2021-12-21 16:37:16 首次发布