Flink Table API 读写MySQL

java 复制代码
import org.apache.flink.connector.jdbc.table.JdbcConnectorOptions;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.DataTypes;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.Schema;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.TableDescriptor;
import org.apache.flink.table.api.TableEnvironment;
import org.apache.flink.table.api.TableResult;

import static org.apache.flink.table.api.Expressions.$;

public class TableApiMysql {
    public static void main(String[] args) {
        EnvironmentSettings settings = EnvironmentSettings.newInstance().inBatchMode().build();
        TableEnvironment tableEnv = TableEnvironment.create(settings);

        Schema schema = Schema.newBuilder()
                .column("user_id", DataTypes.BIGINT())
                .column("user_name", DataTypes.STRING())
                .build();

        TableDescriptor tableDescriptor = TableDescriptor.forConnector("jdbc")
                .option(JdbcConnectorOptions.URL, "jdbc:mysql://localhost:3306/tmp")
                .option(JdbcConnectorOptions.USERNAME, "root")
                .option(JdbcConnectorOptions.PASSWORD, "123456")
                .option(JdbcConnectorOptions.TABLE_NAME, "test")
                .schema(schema)
                .build();

        tableEnv.createTable("source", tableDescriptor);

        // 通过API执行select
        System.out.println("select format 1: ");
        tableEnv.from("source").select($("user_id"), $("user_name")).execute().print();

        // 写入mysql user_id是自增主键
        tableEnv.executeSql("insert into source(user_name) select 'hello'");

        // 直接SQL执行select *
        System.out.println("select format 2: ");
        Table table = tableEnv.sqlQuery("select * from source");
        TableResult execute = table.execute();
        execute.print();
    }
}
相关推荐
春风化作秋雨20 分钟前
什么是矩阵账号
大数据·线性代数·矩阵
落叶随峰27 分钟前
C++好项目:GPU服务器管理面板
服务器·开发语言·c++·分布式·后端·mysql·中间件
阿里云大数据AI技术1 小时前
谁是 AI 搜索先锋?阿里云携手 Elastic 正式启动先锋者招募!
大数据·elasticsearch
酷爱码1 小时前
hadoop相关面试题以及答案
大数据·hadoop·分布式
遇码1 小时前
一款超级好用且开源免费的数据可视化工具——Superset
大数据·信息可视化·开源·可视化·bi·superset
码农爱java4 小时前
Elasticsearch 之 ElasticsearchRestTemplate 普通查询
大数据·elasticsearch·全文检索·jenkins·springboot·es·es 查询
2302_799525745 小时前
【MySQL】用户账户、角色、口令、PAM
数据库·mysql
Go高并发架构_王工7 小时前
GoFrame框架连接与操作TDengine时序数据库的技术实践:从入门到踩坑
大数据·时序数据库·tdengine
宝哥大数据8 小时前
Flink 常用及优化参数
flink
忆往夕梦11 小时前
MySQL - 数据库基础操作
数据库·sql·mysql