大数据培训:构建Flink SQL流式计算平台

一、背景

Flink 由于阿里在国内的助推,火爆程度可以想象,且目前Flink 有非常明显的趋势是往SQL 方向进行的。很多大厂已经实现了Flink SQL化,那我们怎么去实现一个流式计算平台呢?

二、Flink SQL 初探以及代码实现

连接kafka 对数据进行处理写入mysql

package org.example;


import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.TableEnvironment;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;




public class SqlDemo {
public static void main(String[] args) throws Exception {
//创建执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();


EnvironmentSettings settings = EnvironmentSettings.newInstance()
                .useBlinkPlanner()
                .inStreamingMode()
                .build();


TableEnvironment tableEnv = StreamTableEnvironment.create(env, settings);


//把kafka 中的topic映射成一个输入临时表
        tableEnv.executeSql(
"create table sensor_source (id string,name string) with (" +
" 'connector' = 'kafka'," +
"  'topic' = 'test_info_test'," +
"  'properties.bootstrap.servers' = 'localhost:9092'," +
"  'properties.group.id' = 'testGroup'," +
"  'scan.startup.mode' = 'earliest-offset'," +
"  'format' = 'json')"
        );
//把mysql 中的表映射成一个输出临时表


String sql = "CREATE TABLE print_table (\n" +
" id STRING,\n" +
" name STRING\n" +
") WITH (\n" +
" 'connector' = 'print'\n" +
")";


String mysql_sql = "CREATE TABLE mysql_sink (\n" +
"                   id string,\n" +
"                   name string\n" +
" ) WITH (\n" +
"   'connector' = 'jdbc',\n" +
"   'url' = 'jdbc:mysql://ip:8081/kafka?serverTimezone=UTC',\n" +
"   'table-name' = 'test_info',\n" +
"   'username' = 'kafka',\n" +
"   'password' = 'Bonc@123'\n" +
" )";


String kafka_sink_sql=
"create table kafka_sink (id string,name string) with (" +
" 'connector' = 'kafka'," +
"  'topic' = 'test_info_2'," +
"  'properties.bootstrap.servers' = 'localhost:9092'," +
"  'format' = 'json')";


        tableEnv.executeSql(mysql_sql);
//tableEnv.executeSql(kafka_sink_sql);
//tableEnv.executeSql(sql);
//插入数据的sql语句
//tableEnv.executeSql("insert into print_table select * from sensor_source");


        tableEnv.executeSql("insert into mysql_sink select * from sensor_source");




//tableEnv.executeSql("insert into kafka_sink select * from sensor_source");


    }
}

运行之后mysql 里面数据就有了

三、Flink 实时计算平台

依据上面的代码,我们可以抽象出一层Flink 实时计算平台。

 文章来源于诸葛子房

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值