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

GROUP BY 是对数据举办分组的操纵,好比我必要别离计较一下一个门生表内里女生和男生的人数别离是几多,如下:

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

(1) Table API 示例

将order_tab信息按c_id分组统计订单数目,简朴示譬喻下:

  1. val result = order 
  2. .groupBy('c_id) 
  3. .select('c_id, 'o_id.count) 

(2) Result

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

(3) 出格声名

在现实的营业场景中,GROUP BY除了按营业字段举办分组外,许多时辰用户也可以用时刻来举办分组(相等于分别窗口),好比统计每分钟的订单数目:

  • Table API 示例

定时刻举办分组,查询每分钟的订单数目,如下:

  1. ``` 
  2. val result = order 
  3. .select('o_id, 'c_id, 'o_time.substring(1, 16) as 'o_time_min) 
  4. .groupBy('o_time_min) 
  5. .select('o_time_min, 'o_id.count) 
  6. ``` 
  • Result

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

声名:假如我们时刻字段是timestamp范例,提议行使内置的 DATE_FORMAT 函数。

5. UNION ALL

UNION ALL 将两个表归并起来,要求两个表的字段完全同等,包罗字段范例、字段次序,语义对应相关代数的Union,只是相关代数是Set荟萃操纵,会有去一再操纵,UNION ALL 不举办去重,如下所示:

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

(1) Table API 示例

我们简朴的将customer_tab查询2次,将查询功效归并起来,如下:

  1. val result = customer.unionAll(customer) 

(2) Result

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

(3) 出格声名

UNION ALL 对功效数据不举办去重,假如想对功效数据举办去重,传统数据库必要举办UNION操纵。

6. UNION

UNION 将两个流给归并起来,要求两个流的字段完全同等,包罗字段范例、字段次序,并其UNION 差异于UNION ALL,UNION会对功效数据去重,与相关代数的Union语义同等,如下:

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

(1) Table API 示例

我们简朴的将customer_tab查询2次,将查询功效归并起来,如下:

  1. val result = customer.union(customer) 

我们发明完全一样的表数据举办 UNION之后,数据是被去重的,UNION之后的数据并没有增进。

(2) Result

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

(3) 出格声名

UNION 对功效数据举办去重,在现实的实现进程必要对数据举办排序操纵,以是非须要去重环境请行使UNION ALL操纵。

7. JOIN

(编辑:湖南网)

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

热点阅读