Flink流之动态表详解(一)
问题导读
1.动态表有什么特点?
2.流处理与批处理转换为表后有什么相同之处?
3.动态表和连续查询是什么关系?
4.连续查询本文列举了什么例子?
5.Flink的Table API和SQL支持哪三种编码动态表更改的方法?
由于Flink对流式数据的处理超越了目前流行的所有框架,所以非常受各大公司的欢迎,其中包括阿里,美团、腾讯、唯品会等公司。而当前也有很多的公司在做技术调研而跃跃欲试。
Flink为何如此受欢迎?
Flink难道比Spark还好用?在流式处理上,Flink是真正的流式处理,Spark则是将数据分割为微批处理。在设计上,Flink本身认为数据是流式的,批处理是流式处理的特殊情况。
动态表与传统表有什么不同?
在Flink中,流式数据和批数据都是可以转换为表的数据,然而流式数据转换为表,是比较难以理解的。所以流式数据会转换为动态表。那么动态表是怎么个情况?它与我们传统的关系表有什么相同之处,有什么不同之处?阅读下面内容可解决这些问题。
上一篇
彻底明白Flink系统学习24:【Flink1.7】Table API 和SQL API介绍4:数据类型映射表...
Flink的Table
API和SQL支持是用于批处理和流处理的统一API。 这意味着Table
API和SQL查询具有相同的语义,无论它们的输入是有界批量输入还是无界流输入。
因为关系代数和SQL最初是为批处理而设计的,所以关于无界流输入的关系查询不像有界批输入上的关系查询那样容易理解。
补充:
这里有一个比较难以理解的地方:关系代数是什么鬼?
关系代数是程序性查询语言,它将Relation作为输入并生成关系作为输出。 关系代数主要为关系数据库和SQL提供理论基础。由于外链有限制,如想了解更多可阅读原文
以下内容解释了Flink关于流数据的关系API的概念,流的配置参数等。
Streaming概念的整体介绍:
动态表:描述动态表的概念。
时间属性:解释时间属性以及表API和SQL中时间属性的处理方式。
连续查询中的连接:连续查询中不同支持的join类型。
时间表:描述时间表概念。
查询配置:列出表API和SQL特定的配置选项。
这里我们重点讲动态表。
动态表
SQL的设计并未考虑流数据。 因此,关系代数(和SQL)与流处理之间的概念差距很小。
本文讨论这些差异,并解释Flink如何在无界数据上实现与有界数据上的常规数据库引擎相同的语义。
数据流的关系查询
下表将传统的sql和流处理进行了比较。