• Flink SQL项目实录


    一、Flink SQL层级

    为Flink最高层的API,易于使用,所以应用更加广泛,eg. ETL、统计分析、实时报表、实时风控等。

    Flink SQL所处的层级:

    二、Flink聚合:

    1、Window Aggregate

    内置了三种常用的窗口:

    TUMBLE(time, INTERVAL '5'  SECOND);     //类似于flink 中间层 DataStream API 中 window中的滚动窗口

    HOP(time, INTERVAL '10' SECOND, INTERVAL '5' SECOND);     //类似于flink 中间层 DataStream API中 window的滑动窗口,每10秒中统计最近5秒的数据

    SESSION(time, INTERVAL '5' SECOND)

    time有两种格式的时间,一种是proctime也就是系统时间, 另一种是rowtime。

    2、 Group Aggregate

    继续加入数据时:

     继续进入数据:

     

    结果是一个不断更新的过程。

    Window Aggregate 与 Group Aggregate 的区别

    1)、Window Aggregate 与 Group Aggregate 是有一些明显的区别的。其主要的区别是,Window Aggregate 是当window结束时才输出,其输出的结果是最终值,不会再进行修改,其输出流是一个 Append 流。

    而 Group Aggregate 是每处理一条数据,就输出最新的结果,其结果是在不断更新的,就好像数据库中的数据一样,其输出流是一个 Update 流。

     

    2)、另外一个区别是,window Aggregate 由于有 watermark ,可以精确知道哪些窗口已经过期了,所以可以及时清理过期状态,保证状态维持在稳定的大小。

    而 Group Aggregate 因为不知道哪些数据是过期的,所以状态会无限增长,这对于生产作业来说不是很稳定,所以建议对 Group Aggregate 的作业配上 State TTL 的配置。

    对比图:

     项目代码设置:

    tEnv.getConfig().setIdleStateRetentionTime(org.apache.flink.api.common.time.Time.minutes(1),org.apache.flink.api.common.time.Time.minutes(10));
  • 相关阅读:
    在Fragment中保存WebView状态
    Code First下迁移数据库更改
    脚本解决.NET MVC按钮重复提交问题
    1.1C++入门 未完待续。。。
    0.0C语言重点问题回顾
    12F:数字变换
    12G:忍者道具
    12D:迷阵
    12C:未名冰场
    12B:要变多少次
  • 原文地址:https://www.cnblogs.com/gxyandwmm/p/12076729.html
Copyright © 2020-2023  润新知