Table API
是流处理和批处理通用的关系型
API
,
Table API
可以基于流输入或者
批输入来运行而不需要进行任何修改。
Table API
是
SQL
语言的超集并专门为
Apache
Flink
设计的,
Table API
是
Scala
和
Java
语言集成式的
API
。与常规
SQL
语言中将
查询指定为字符串不同,
Table API
查询是以
Java
或
Scala
中的语言嵌入样式来定义
的,具有
IDE
支持如
:
自动完成和语法检测。
1
需要引入的
pom
依赖
![](https://img-blog.csdnimg.cn/2f03db619676425aab99388dbed15e9c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_20,color_FFFFFF,t_70,g_se,x_16)
.2 简单了解 TableAPI
1 动态表
如果流中的数据类型是 case class 可以直接根据 case class 的结构生成 table
tableEnv.fromDataStream(dataStream)
或者根据字段顺序单独命名
tableEnv.fromDataStream(dataStream,’id,’timestamp .......)
最后的动态表可以转换为流进行输出
table.toAppendStream[(String,String)]
2 字段
用一个单引放到字段前面来标识字段名, 如 ‘name , ‘id ,’amount 等
3 TableAPI
的窗口聚合操作
3.1
通过一个例子了解
TableAPI
3.2 关于 group by
![](https://img-blog.csdnimg.cn/b45bc154a60e47bfbb32e5e85e5885aa.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_18,color_FFFFFF,t_70,g_se,x_16)
3.3
关于时间窗口
1.
用到时间窗口,必须提前声明时间字段,如果是
processTime
直接在创建动
态表时进行追加就可以。
![](https://img-blog.csdnimg.cn/1c17875596a24685b569bbe21b46ba2d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_18,color_FFFFFF,t_70,g_se,x_16)
4 SQL 如何编写