加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁波网 (https://www.ningbowang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Apache Flink 漫谈系列(13) - Table API 概述

发布时间:2019-01-18 01:20:41 所属栏目:教程 来源:孙金城
导读:一、什么是Table API 在《Apache Flink 漫谈系列(08) - SQL概览》中我们概要的向大家介绍了什么是好SQL,SQL和Table API是Apache Flink中的同一层次的API抽象,如下图所示: Apache Flink 针对不同的用户场景提供了三层用户API,最下层ProcessFunction API

Hop 滑动窗口和滚动窗口类似,窗口有固定的size,与滚动窗口不同的是滑动窗口可以通过slide参数控制滑动窗口的新建频率。因此当slide值小于窗口size的值的时候多个滑动窗口会重叠。

  • 语义

Hop 滑动窗口语义如下所示:

Apache Flink 漫谈系列(13) - Table API 概述

  • Table API 示例

利用pageAccessCount_tab测试数据,我们需要每5分钟统计近10分钟的页面访问量(PV).

  1. val result = pageAccessCount 
  2. .window(Slide over 10.minute every 5.minute on 'rowtime as 'w) 
  3. .groupBy('w) 
  4. .select('w.start, 'w.end, 'accessCount.sum as 'accessCount) 
  • Result

Apache Flink 漫谈系列(13) - Table API 概述

(c) Session

Seeeion 会话窗口 是没有固定大小的窗口,通过session的活跃度分组元素。不同于滚动窗口和滑动窗口,会话窗口不重叠,也没有固定的起止时间。一个会话窗口在一段时间内没有接收到元素时,即当出现非活跃间隙时关闭。一个会话窗口 分配器通过配置session gap来指定非活跃周期的时长.

  • 语义

Session 会话窗口语义如下所示:

Apache Flink 漫谈系列(13) - Table API 概述

  1. val result = pageAccessSession 
  2. .window(Session withGap 3.minute on 'rowtime as 'w) 
  3. .groupBy('w, 'region) 
  4. .select('region, 'w.start, 'w.end, 'region.count as 'pv) 
  • Result

Apache Flink 漫谈系列(13) - Table API 概述

(d) 嵌套Window

在Window之后再进行Window划分也是比较常见的统计需求,那么在一个Event-Time的Window之后,如何再写一个Event-Time的Window呢?一个Window之后再描述一个Event-Time的Window最重要的是Event-time属性的传递,在Table API中我们可以利用'w.rowtime来传递时间属性,比如:Tumble Window之后再接一个Session Window 示例如下:

  1. ... 
  2. val result = pageAccess 
  3. .window(Tumble over 2.minute on 'rowtime as 'w1) 
  4. .groupBy('w1) 
  5. .select('w1.rowtime as 'rowtime, 'col1.count as 'cnt) 
  6. .window(Session withGap 3.minute on 'rowtime as 'w2) 
  7. .groupBy('w2) 
  8. .select('cnt.sum) 
  9. ... 

五、Source&Sink

(编辑:宁波网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读