Flink SQL -- 概述

1、Flink SQL中的动态表和连续查询
        1、动态表:

                因为Flink是可以做实时的,数据是在不断的变化的,所以动态表指的是Flink中一张实时变换的表,表中会不断的有新的数据。但是这张表并不是真正的物理表。

        2、连续查询:

                连续不断的查询,因为Flink中的数据是实时不断的,所以在SQL查询数据的时候,查询是连续不断的。

2、Flink SQL 的大致流程

        1、首先会将Flink中的流转化成一张动态表,在流上定义一张表,但是在流上定义的一张表内部没有物化。

         在使用SQL的前提就是需要有一张表,在Flink流中定义的定义的一张表,就是将Flink流中的数据给定义一下字段的名称,表的类型,数据类型等一些表该具备的条件,这让能使用SQL查询。

        2、此时就会在这张动态表上会做连续查询,将查询的结果再分装成一个动态表

对于连续查询也是需要维护转状态的,因为每次的查询都会使用到上一次查询的数据,所以查询的表数据(动态表)是存储在状态中的。但是Flink SQL 中的开窗是不需要进行维护状态的。

        3、然后在将生成的动态表转换成一个Flink中的流。

需要注意的是:

                1、首先动态表是一个逻辑概念,不是一张物理表,就类似MySQL中的视图,可以做查询但是不存储数据,因为是流处理,所以当流来一条数据,就处理一条数据,然后将处理的结果返回出去,所以是不存储数据

                2、在查询执行期间不一定物化动态表。

3、更新和追加查询:
        第一种查询,如下图所示:

                当第一条数据进入时,会产生一条数据,此时结果表中产生第一条数据,是属于insert,当流中的第二条数据进入时,因为在结果表中并没有这条数据,所以也是属于insert的操作,当第三条数据进入的时候,此时的结果表中的数据就发生改变,数据并不是在insert,而是在update

        第二种查询,如下图所示: 

                此时在Flink的SQL中做开窗查询,滑动的事件时间查询,此时结果表展示是每个窗口数据,只有insert的操作。

 虽然两种实力查询看起来非常的相似,但是它们在一个重要方面不同:

        第一个查询更新先前输出的结果,即定义结果表的 changelog 流包含 INSERT 和 UPDATE 操作。

        第二个查询只附加到结果表,即结果表的 changelog 流只包含 INSERT 操作。

两者都有其分别的的含义:

       1、 产生一个更新更改的查询通常必须维护更多的状态,因为需要使用到之前的数据

        2、将一个append-only的表转化成流与一个将已更新的表转化成的流是不相同的。

4、查询限制:
        1、状态大小

连续查询在无界流中的查询,通常的计算时间会比较长,随着时间的推移,所需要维护的状态就会越来大,随着时间的推移,就有可能会导致任务失败。

        2、计算更新

比如查询的计算量特别的大,对于这些需要重新计算和更新大量已经输出的结果表,如果随便的添加一行或者更新更新一行数据,那么计算压力会非常的大,有可能会导致任务失败。

5、表到流的转换:

        将动态表转化成一个流或将其写入到外部系统中,对这些更改进行编码。Flink的 Table API 和 SQL 支持三种方式来编码一个动态表的变化:

        1、Append-Only 流(仅追加流):

                指的是连续查询后的结果表中数据是通过insert操作追加的动态表转换成的流。

        2、ReTract 流(撤回流):retract 流包含两种类型的 message: add messages 和 retract messages 。

例如下图的表中显示的,当第一条和第二条数据数据进来的时候,此时的结果是还一条流,当第三条数据进来的时候,由于数据已经存在流中,此时就会产生两条结果,分别进行删除和更新,删除产生一个与存在流中相反的数据,与其抵消,然后再产生一个新的数据。例如图中原先流中的 + Mary 1已经存在,此时就会产生一个 - Mary 1与其抵消,然后在更新一个 + Mary 2发送到流中。

        3、Upsert流

upsert 流包含两种类型的 message: upsert messages 和delete messages。

是将动态中表中的数据写入到流中,当写入到流中的数据相同时,会自动的更新或插入数据。

        

               

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/166382.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 关闭SpringBoot启动Logo/图标

一、环境 1、SpringBoot 2.6.4 Maven POM格式 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/></parent> 2、IDE…

容联七陌携手岚时科技,解决医美机构回访3大痛点

近日&#xff0c;岚时科技研发中心联合容联七陌发布了全新的智能呼叫中心系统&#xff0c;5大功能模块解决了医美机构回访过程中的3大难题&#xff1a;客户资产保全困难、客户回访技术被卡脖子、回访人员&#xff08;客服、咨询&#xff09;效率管理困难。 “智能呼叫中心”通过…

cookie 里面都包含什么属性?

结论先行&#xff1a; Cookie 中除了名称和值外&#xff0c;还有几个比较常见的&#xff0c;例如&#xff1a; Domain 域&#xff1a;指定了 cookie 可以发送到哪些域&#xff0c;只有发送到指定域或其子域的请求才会携带该cookie&#xff1b; Path 路径&#xff1a;指定哪些…

一个易用的消息订阅发布系统-Pubsub.js

本文作者系360奇舞团前端开发工程师 简介 随着软件架构越来越复杂&#xff0c;如何有效地解决各个模块之间的通信问题变得尤为重要。一种常见的解决方案就是采用消息订阅发布机制。在这种模式下&#xff0c;每个模块只需要关注自己要发送或接收的消息&#xff0c;而不必关心其他…

07【保姆级】-GO语言的程序流程控制【if switch for while 】

之前我学过C、Java、Python语言时总结的经验&#xff1a; 先建立整体框架&#xff0c;然后再去抠细节。先Know how&#xff0c;然后know why。先做出来&#xff0c;然后再去一点点研究&#xff0c;才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…

pytorch之relu激活函数

目录 1、relu 2、relu6 3、leaky_relu 4、ELU 5、SELU 6、PReLU 1、relu ReLU&#xff08;Rectified Linear Unit&#xff09;是一种常用的神经网络激活函数&#xff0c;它在PyTorch中被广泛使用。ReLU函数接受一个输入值&#xff0c;如果该值大于零&#xff0c;则返回该…

力扣197. 上升的温度

【版本1】&#xff1a; select w2.id from Weather w1 inner join Weather w2 on w1.recordDate subdate(w2.recordDate,1) where w2.Temperature > w1.Temperature【小记】 1、遇到这种某个字段与自身相比&#xff08;今天温度和昨天温度比&#xff0c;是温度这个字段…

已解决:云原生领域的超时挂载Bug — Kubernetes深度剖析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Moco框架初探

一、简介 Moco是一个搭建模拟服务器的工具&#xff0c;其支持API和独立运行两种方式&#xff0c;前者通常在junit等测试框架中使用&#xff0c;后者则是通过运行一个jar包开启服务。 二、用途 主要用于实现mock技术 1、后端接口开发未完成情况下&#xff0c;通过moco模拟接…

Maven-构建工具

一、背景 开发者编写完成源码&#xff0c;还需要进行编译、测试、打包、部署等一系列操作。在一些小型项目中&#xff0c;还可能通过手动方式进行以上操作。但是在大型项目中&#xff0c;难以确定以上操作的顺序&#xff0c;而且会耗费更高的时间成本。 1.构建工具 构建工具…

服务器的操作系统,你选择哪些?

OpenCloudOS CentOS CentOS Stream Ubuntu Debian Windows Server

特殊矩阵的压缩存储(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)

目录 1.数组的存储结构1.—维数组2.二维数组1.行优先存储2.列优先存储 2.特殊矩阵1.对称矩阵1.行优先存储 2.三角矩阵1.上三角矩阵2.下三角矩阵 3.三对角矩阵&#xff08;带状矩阵&#xff09;4.稀疏矩阵 1.数组的存储结构 1.—维数组 各数组元素大小相同&#xff0c;且物理上…