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

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

发布时间:2019-01-18 02:39:04 所属栏目:教程 来源:孙金城
导读:一、什么是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

(编辑:湖南网)

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

热点阅读