前提:已经在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("插入成功");
}
}
599

被折叠的 条评论
为什么被折叠?



