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

Apache Flink 漫谈系列 - 一连查询(Continuous Queries)

发布时间:2018-11-08 14:09:06 所属栏目:教程 来源:孙金城
导读:一、现实题目 我们知道在流计较场景中,数据是绵绵不断的流入的,数据流永久不会竣事,那么计较就永久不会竣事,假如计较永久不会竣事的话,那么计较功效何时输出呢?本篇将先容Apache Flink操作一连查询来对流计较功效举办一连输出的实现道理。 二、数据管

上面Append Only 和 Update两种场景在MySQL上面都可以操作Trigger机制模仿 一连查询的观念,也就是说数据表中每次数据变革,我们都触发一次沟通的查询计较(只是计较时辰数据的荟萃产生了变革),由于数据表不绝的变革,这个表就可以看做是一个动态表Dynamic Table,而查询SQL(select * from flink_tab_ts) 被触发器Trigger在满意某种前提后不断的触发计较,进而也不绝地发生新的功效。这种浸染在Dynamic Table,而且有某种机制(Trigger)不绝的触发计较的查询我们就称之为 一连查询。

那么到底静态查询和动态查询的相关是什么呢?在语义上 一连查询 中的每一次查询计较的触发都是一次静态查询(相对付其时查询的时刻点), 在实现上 Apache Flink会操作上一次查询功效+当前记录 以增量的方法完成查询计较。

出格声名: 上面我们操作 数据变革+Trigger方法描写了一连查询的观念,这里有须要出格夸大一下的是数据库中trigger机制触发的查询,每次都是一个全量查询,这与Apache Flink上面流计较的一连查询观念沟通,但实现机制完全差异,Apache Flink上面的一连查询内部实现是增量处理赏罚的,跟着时刻的推移,每条数据的到来及时处理赏罚当前的那一笔记录,不会处理赏罚曾经来过的汗青记录!

七、Apache Flink 怎样做到一连查询

1. 动态表上面一连查询

在 《Apache Flink 漫谈系列 - 流表对偶(duality)性》 中我们相识到流和表可以彼此转换,在Apache Flink流计较中携带流变乱的Schema,颠末算子计较之后再发生具有新的Schema的变乱,流入下流节点,在发生新的Schema的Event和不绝流转的进程就是一连查询浸染的功效,如下图:

Apache Flink 漫谈系列 - 一连查询(Continuous Queries)

2. 增量计较

我们举办查询大大都场景是举办数据聚合,好比查询SQL中操作count,sum等aggregate function举办聚合统计,那么流上的数据绵绵不断的流入,我们既不能等全部变乱流入竣事(永久不会竣事)再计较,也不会每次来一条变乱就像传统数据库一样将所有变乱荟萃从头整体计较一次,在一连查询的计较进程中,Apache Flink回收增量计较的方法,也就是每次计较城市将计较功效存储到state中,下一条变乱到来的时辰操作前次计较的功效和当前的变乱举办聚合计较,好比 有一个订单表,如下:

Apache Flink 漫谈系列 - 一连查询(Continuous Queries)

一个简朴的计数和求和查询SQL:

  1. // 求订单总数和全部订单的总金额 
  2. select count(id) as cnt,sum(amount)as sumAmount from order_tab; 

这样一个简朴的一连查询计较,Apache Flink内部是如那里理赏罚的呢?如下图:

Apache Flink 漫谈系列 - 一连查询(Continuous Queries)

如上图,Apache Flink中每来一条变乱,就举办一次计较,而且每次计较后功效会存储到state中,供下一条变乱到来时辰举办计较,即:

  1. result(n) = calculation(result(n-1), n)。 

3. 无PK的Append Only 场景

在现实的营业场景中,我们只必要举办简朴的数据统计,然后就将统计功效写入到营业的数据存储体系内里,好比上面统计订单数目和总金额的场景,订单表自己是一个append only的数据源(假设没有更新,截至到2018.5.14日,Apache Flink内部支持的数据源都是append only的),在一连查询进程中颠末count(id),sum(amount)统计计较之后发生的动态表也是append only的,种场景Apache Flink内部只必要举办aggregate function的聚合统计计较就可以,如下:

Apache Flink 漫谈系列 - 一连查询(Continuous Queries)

4. 有PK的Update 场景

此刻我们将上面的订单场景轻微变革一下,在数据表上面我们将金额字段amount,变为地域字段region,数据如下:

Apache Flink 漫谈系列 - 一连查询(Continuous Queries)

(编辑:湖南网)

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

热点阅读