flink读写doris,多表jion并插入新表

前提:已经在doris中建好表。

pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>flink_demo</artifactId>
        <groupId>com.sh</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>FlinkCDC</artifactId>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <encoding>UTF-8</encoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <java.version>1.8</java.version>
        <scala.version>2.12</scala.version>
        <flink.version>1.13.6</flink.version>
        <mysql-connector.version>8.0.28</mysql-connector.version>
    </properties>

    <dependencies>
        <!-- hudi相关依赖 -->
        <dependency>
            <groupId>org.apache.hudi</groupId>
            <artifactId>hudi-flink-bundle_2.12</artifactId>
            <version>0.10.1</version>
        </dependency>

        <!-- cdc相关依赖 -->
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-mysql-cdc</artifactId>
            <version>2.2.0</version>
        </dependency>

        <!-- flink相关依赖 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-jdbc_2.12</artifactId>
            <version>1.10.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-jdbc_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-runtime-web_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-common</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-java-bridge_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-java</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner-blink_2.12</artifactId>
            <version>${flink.version}</version>
        </dependency>

        <!-- hdfs相关依赖 -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>3.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.3.2</version>
        </dependency>

        <!-- mysql相关依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.doris</groupId>
            <artifactId>flink-doris-connector-1.13_2.12</artifactId>
            <version>1.0.3</version>
        </dependency>

    </dependencies>

</project>

程序如下:

package com.xports.bigdata;

import org.apache.flink.runtime.state.storage.FileSystemCheckpointStorage;
import org.apache.flink.streaming.api.CheckpointingMode;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;

/**
 * flink读取doris表
 * 多表join输出为一张新表
 */

public class mysqlToDoris {
    public static void main(String[] args) throws Exception{
        //获取执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
        env.getCheckpointConfig().setCheckpointStorage(new FileSystemCheckpointStorage("hdfs://192.168.6.11:9000/flink/checkpoints/doris/test"));
        env.enableCheckpointing(60000L);  // checkpoint周期
        env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE); // checkpoint 模式“精确一次”(exactly-once)和“至少一次”(at-least-once)
        env.getCheckpointConfig().setCheckpointTimeout(30000L);  //checkpoint执行有效期:要么30s完成 要么30s放弃
        env.getCheckpointConfig().setMinPauseBetweenCheckpoints(30000L);  //确保checkpoint时间空闲间隔30s
        String source_table =
                "CREATE TABLE student_t1  (\n" +
                "   `id` INT,\n" +
                "   `name` string, \n" +
                "   `age` string, \n" +
                "   `gender` string, \n" +
                "   `clazz` string  \n" +
                "   ) with (\n" +
                "   'connector'= 'doris',\n" +
                "   'fenodes' = 'ip:8030',\n" +
                "   'table.identifier' = 'test_sh.student_t1',\n" +
                "   'sink.batch.size' = '2',\n" +
                "   'sink.batch.interval'='1',\n" +
                "   'username' = 'username',\n" +
                "   'password' = 'password'\n" +
                ")";
        String source_table2 =
                "CREATE TABLE student_t2  (\n" +
                        "   `id` INT,\n" +
                        "   `name` string, \n" +
                        "   `up_time` string \n" +
                        "   ) with (\n" +
                        "   'connector'= 'doris',\n" +
                        "   'fenodes' = 'ip:8030',\n" +
                        "   'table.identifier' = 'test_sh.student_t2',\n" +
                        "   'sink.batch.size' = '2',\n" +
                        "   'sink.batch.interval'='1',\n" +
                        "   'username' = 'username',\n" +
                        "   'password' = 'password'\n" +
                        ")";
        String sink_table =
                "CREATE TABLE student_t  (\n" +
                        "   `id` INT,\n" +
                        "   `name` string, \n" +
                        "   `age` string, \n" +
                        "   `gender` string, \n" +
                        "   `clazz` string,  \n" +
                        "   `up_time` string \n" +
                        "   ) with (\n" +
                        "   'connector'= 'doris',\n" +
                        "   'fenodes' = 'ip:8030',\n" +
                        "   'table.identifier' = 'test_sh.student',\n" +
                        "   'sink.batch.size' = '2',\n" +
                        "   'sink.batch.interval'='1',\n" +
                        "   'username' = 'username',\n" +
                        "   'password' = 'password'\n" +
                        ")";
        tableEnv.executeSql(source_table);
        tableEnv.executeSql(source_table2);
        tableEnv.executeSql(sink_table);
        String sql="insert into student_t select a.id,a.name,a.age,a.gender,a.clazz,b.up_time from student_t1 a join student_t2 b on a.id=b.id ";
        tableEnv.executeSql(sql);
        System.out.println("插入成功");

    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值