头图

(5)FlinkSQL将socket数据写入到mysql方式二

NBI大数据湖北
public static void main(String[] args) throws Exception {

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.setParallelism(1);
    StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
    DataStreamSource<String> streamSource = env.socketTextStream("127.0.0.1", 9999,"\n");
    SingleOutputStreamOperator<WaterSensor> waterDS = streamSource.map(new MapFunction<String, WaterSensor>() {
        @Override
        public WaterSensor map(String s) throws Exception {
            String[] split = s.split(",");
            return new WaterSensor(split[0], Long.parseLong(split[1]), Integer.parseInt(split[2]));
        }
    });

    // 将流转化为表
    Table table = tableEnv.fromDataStream(waterDS,
            $("id"),
            $("ts"),
            $("vc"),
            $("pt").proctime());

    tableEnv.createTemporaryView("EventTable", table);


    tableEnv.executeSql("CREATE TABLE flinksink (" +
            "componentname STRING," +
            "componentcount BIGINT NOT NULL," +
            "componentsum BIGINT" +
            ") WITH (" +
            "'connector.type' = 'jdbc'," +
            "'connector.url' = 'jdbc:mysql://localhost:3306/testdb?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai'," +
            "'connector.table' = 'flinksink'," +
            "'connector.driver' =  'com.mysql.cj.jdbc.Driver'," +
            "'connector.username' = 'root'," +
            "'connector.password' = 'root'," +
            "'connector.write.flush.max-rows'='3'\r\n" +
            ")"
    );
    Table mysql_user = tableEnv.from("flinksink");
    mysql_user.printSchema();

    Table result = tableEnv.sqlQuery(
            "SELECT " +
                    "id as componentname, " +                //window_start, window_end,
                    "COUNT(ts) as componentcount ,SUM(ts) as componentsum " +
                    "FROM TABLE( " +
                    "TUMBLE( TABLE EventTable , " +
                    "DESCRIPTOR(pt), " +
                    "INTERVAL '10' SECOND)) " +
                    "GROUP BY id , window_start, window_end"
    );

    //方式一:写入数据库

// result.executeInsert("flinksink").print(); //;.insertInto("flinksink");

    //方式二:写入数据库
    tableEnv.createTemporaryView("ResultTable", result);
    tableEnv.executeSql("insert into flinksink SELECT * FROM ResultTable").print();

// tableEnv.toAppendStream(result, Row.class).print("toAppendStream"); //追加模式

    env.execute();
}
阅读 238

10年IT行业从业经验,5+年技术型管理经验。

4 声望
0 粉丝
0 条评论
推荐阅读
(4)SparkSQL中如何定义UDF和使用UDF
Spark SQL中用户自定义函数,用法和Spark SQL中的内置函数类似;是saprk SQL中内置函数无法满足要求,用户根据业务需求自定义的函数。首先定义一个UDF函数:

NBI大数据阅读 148

封面图
聊聊Redis的数据热点问题
&emsp;&emsp;前两天,我们使用的某云厂商服务挂了,而且一挂就是挂大半天,我们的服务强依赖于他们,所以我们也跟着一起挂。然而我们却无能为力,只能等他们恢复。事故原因中听他们提到Redis有个热key,正好我在...

xindoo1阅读 1.6k

封面图
基于 Impala 的高性能数仓实践之物化视图服务
接上篇,前两篇分别讲了执行引擎和虚拟数仓,它们是让一个 SQL 又快又好地执行的关键。但如果某些 SQL 过于复杂,比如多张大表进行 Join 并有大量的聚合类操作,那么再优秀的执行引擎也无法保证能够秒级执行完成...

网易数帆1阅读 428

Apache Kyuubi 在B站大数据场景下的应用实践
近几年随着B站业务高速发展,数据量不断增加,离线计算集群规模从最初的两百台发展到目前近万台,从单机房发展到多机房架构。在离线计算引擎上目前我们主要使用Spark、Presto、Hive。架构图如下所示,我们的BI、A...

网易数帆1阅读 368

封面图
从0到1设计通用数据大屏搭建平台
一直以来,许多产品平台都在尝试通过可视化搭建的手段来降低 GUI 应用的研发门槛,提高生产效率。随着我们业务的发展,数据建设的完善,用户对于数据可视化的诉求也日益增多,而数据大屏是数据可视化的其中一种展...

vivo互联网技术5阅读 485

技术分享 | Presto性能对比测试:Kubernetes部署 VS 物理机部署
Presto是开源分布式SQL查询引擎,可以对从GB到PB级大小的数据源进行交互式分析查询。Presto支持Hive、Cassandra、关系型数据库甚至专有数据存储等多种数据源,允许跨源查询。(详见参考[1] )

Alluxio1阅读 247

封面图
Apache Hudi X Apache Kyuubi,中国移动云湖仓一体的探索与实践
导读:在云原生 + 大数据的时代,随着业务数据量的爆炸式增长以及对高时效性的要求,云原生大数据分析技术,经历了从传统数仓到数据湖,再到湖仓一体的演进。本文主要介绍移动云云原生大数据分析 LakeHouse 的整...

网易数帆阅读 318

10年IT行业从业经验,5+年技术型管理经验。

4 声望
3 粉丝
宣传栏