flink-jdbc-driver

        Flink JDBC 驱动程序是一个 Java 库,使客户端能够通过 SQL 网关将 Flink SQL 发送到 Flink 集群。

     首先启动:1.flink集群,随意任何集群。

     2.启动flink-sql-gateway:

sql-gateway.sh start -Dsql-gateway.endpoint.rest.address=localhost

验证sql- gateway

curl http://localhost:8083/v1/info
  1. Maven 依赖项

    Flink JDBC 驱动是一个通过 JDBC API 访问 Flink 集群的库。有关 Java 中 JDBC 的一般用法,请参见 JDBC 教程

  2. 在项目的pom.xml中添加以下依赖项,或者下载 flink-jdbc-driver-bundle-{VERSION}.jar 并将其添加到你的 Classpath 中。

       

 <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-sql-jdbc-driver-bundle</artifactId>
            <version>${flink.version}</version>
 </dependency>
  1. 使用特定 URL 连接到 Java 代码中的 Flink SQL 网关。
  2. 执行您想要的任何语句。

     

public class Main {
    public static void main(String[] args) throws SQLException {
        Properties properties = new Properties();
        properties.setProperty("table.exec.sink.not-null-enforcer","DROP");
        DataSource dataSource = new FlinkDataSource("jdbc:flink://ip:8083", properties);
        try (Connection connection = dataSource.getConnection()) {
            try (Statement statement = connection.createStatement()) {

                /*statement.execute("CREATE TABLE student (\n" +
                        "  id VARCHAR(255),\n" +
                        "  sid VARCHAR(255),\n" +
                        "  name VARCHAR(255),\n" +
                        "  PRIMARY KEY (id) NOT ENFORCED" +
                        ") WITH (\n" +
                        "   'connector' = 'jdbc',\n" +
                        "   'url' = 'jdbc:mysql://ip:3306/test?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true',\n" +
                        "   'username' = 'test',\n" +
                        "   'password' = 'test@123',\n " +
                        "   'table-name' = 'student' " +
                        ")");
                statement.execute("CREATE TABLE students (\n" +
                        "  id VARCHAR(255),\n" +
                        "  sid VARCHAR(255),\n" +
                        "  name VARCHAR(255),\n" +
                        "  PRIMARY KEY (id) NOT ENFORCED" +
                        ") WITH (\n" +
                        "   'connector' = 'jdbc',\n" +
                        "   'url' = 'jdbc:mysql://ip:3306/test?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true',\n" +
                        "   'username' = 'test',\n" +
                        "   'password' = 'test@123',\n " +
                        "   'table-name' = 'students' " +
                        ")");*/

                statement.execute("CREATE TABLE students (\n" +
                        "  name STRING,\n" +
                        "  sid BIGINT,\n" +
                        "  PRIMARY KEY (sid) NOT ENFORCED" +
                        ") WITH (\n" +
                        "   'connector' = 'paimon',\n" +
                        "   'path' = 'hdfs://ip:8072/paimon/hive/olap_mz.db/students'\n" +
                        ")");
                //statement.execute("INSERT INTO students VALUES ('1', 's1', 'Hi'), ('2', 's2','Hello')");
                try (ResultSet rs = statement.executeQuery("SELECT st.sid,count(st.sid) as coun FROM students st group by st.sid")) {
                    while (rs.next()) {
                        System.out.println(rs.getLong(1) +","+rs.getLong(2) );
                    }
                    statement.close();
                }
                connection.close();

            }

        }


    }
}

注释的是mysql的,运行的是paimon的。

关于flink-cdc的建表操作,我们可以参考官方文档提供的示例代码。在官方文档的"Table Sink"部分,有一个示例展示了如何使用flink-cdc创建一个MySQL表。首先,你需要创建一个TableEnvironment对象,然后使用该对象创建一个Catalog,并将该Catalog注册到TableEnvironment中。接下来,你可以使用TableEnvironment的executeSql方法执行创建表的SQL语句。下面是一个示例代码: ```java import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.EnvironmentSettings; import org.apache.flink.table.api.TableEnvironment; public class FlinkCDCExample { public static void main(String[] args) { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); EnvironmentSettings settings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build(); TableEnvironment tEnv = TableEnvironment.create(settings); // 创建一个MySQL的Catalog tEnv.executeSql("CREATE CATALOG mycatalog WITH (\n" + " 'type'='jdbc',\n" + " 'property-version'='1',\n" + " 'base-url'='jdbc:mysql://localhost:3306',\n" + " 'default-database'='mydatabase',\n" + " 'username'='myuser',\n" + " 'password'='mypassword',\n" + " 'jdbc-driver'='com.mysql.cj.jdbc.Driver'\n" + ")"); // 注册Catalog到TableEnvironment tEnv.useCatalog("mycatalog"); // 创建MySQL表 tEnv.executeSql("CREATE TABLE mytable (\n" + " id INT,\n" + " name STRING\n" + ") WITH (\n" + " 'connector'='mysql-cdc',\n" + " 'database-name'='mydatabase',\n" + " 'table-name'='mytable',\n" + " 'debezium.deployment.mode'='local'\n" + ")"); } } ``` 以上代码创建了一个名为`mytable`的MySQL表,表结构包含`id`和`name`两个字段。你可以根据自己的需求修改表名和字段。同时,根据实际情况修改MySQL的连接信息,包括URL、用户名和密码等。请确保你已经将相应的依赖项添加到项目的依赖文件中,并导入所需的类库。 需要注意的是,以上示例使用的是MySQL作为示例数据库,如果你使用的是其他数据库,你需要相应地修改连接信息和驱动程序。 希望以上信息对你有所帮助。如有任何疑问,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [浅谈flink-cdc的使用](https://blog.csdn.net/chenzuoli/article/details/122021562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任错错

如果对您有帮助我很开心

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值