加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (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

我们查询customer_tab 和 order_tab表,将客户和订单信息选择出来如下:

  1. val result = customer 
  2. .leftOuterJoin(order.select('o_id, 'c_id as 'o_c_id, 'o_time, 'o_desc), 'c_id === 'o_c_id) 

(4) Result

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

(5) 出格声名

RIGHT JOIN 相等于 LEFT JOIN 阁下两个表交互一下位置。FULL JOIN相等于 RIGHT JOIN 和 LEFT JOIN 之后举办UNION ALL操纵。

8. Time-Interval JOIN

Time-Interval JOIN 相对付UnBounded的双流JOIN来说是Bounded JOIN。就是每条流的每一条数据会与另一条流上的差异时刻地区的数据举办JOIN。对应Apache Flink官方文档的 Time-windowed JOIN(release-1.7之前都叫Time-Windowed JOIN)。 Time-Interval JOIN的语义和实现道理详见《Apache Flink 漫谈系列(12) - Time Interval(Time-windowed) JOIN》。其Table API焦点的语法示例,如下:

  1. ... 
  2. val result = left 
  3. .join(right) 
  4. // 界说Time Interval 
  5. .where('a === 'd && 'c >= 'f - 5.seconds && 'c < 'f + 6.seconds) 
  6. ... 

9. Lateral JOIN

Apache Flink Lateral JOIN 是左边Table与一个UDTF举办JOIN,具体的语义和实现道理请参考《Apache Flink 漫谈系列(10) - JOIN LATERAL》。其Table API焦点的语法示例,如下:

  1. ... 
  2. val udtf = new UDTF 
  3. val result = source.join(udtf('c) as ('d, 'e)) 
  4. ... 

10. Temporal Table JOIN

Temporal Table JOIN 是左边表与右边一个携带版本信息的表举办JOIN,具体的语法,语义和实现道理详见《Apache Flink 漫谈系列(11) - Temporal Table JOIN》,其Table API焦点的语法示例,如下:

  1. ... 
  2. val rates = tEnv.scan("versonedTable").createTemporalTableFunction('rowtime, 'r_currency) 
  3. val result = left.join(rates('o_rowtime), 'r_currency === 'o_currency)... 

11. Window

在Apache Flink中有2种范例的Window,一种是OverWindow,即传统数据库的尺度开窗,每一个元素都对应一个窗口。一种是GroupWindow,今朝在SQL中GroupWindow都是基于时刻举办窗口分另外。

(1) Over Window

Apache Flink中对OVER Window的界说遵循尺度SQL的界说语法。

按ROWS和RANGE分类是传统数据库的尺度分类要领,在Apache Flink中还可以按照时刻范例(ProcTime/EventTime)和窗口的有限和无穷(Bounded/UnBounded)举办分类,共计8种范例。为了停止各人对详尽分类造成困扰,我们凭证确定当前行的差异方法将OVER Window分成两大类举办先容,如下:

  • ROWS OVER Window - 每一行元素都视为新的计较行,即,每一行都是一个新的窗口。
  • RANGE OVER Window - 具有沟通时刻值的全部元素行视为统一计较行,即,具有沟通时刻值的全部行都是统一个窗口。

(a) Bounded ROWS OVER Window

Bounded ROWS OVER Window 每一行元素都视为新的计较行,即,每一行都是一个新的窗口。

  • 语义

(编辑:湖南网)

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

热点阅读