第十六周 Flink极速上手篇-Flink核心API之TableAPI和SQL-5
Table API & SQL
1 | 注意:Table API和SQL现在还处于活跃开发阶段,还没有完全实现Flink中所有的特性。不是所有的[Table API,SQL]和[流,批]的组合都是支持的。 |
1 | Table API和SQL的由来: |
1 | Table API和SQL是一种关系型API,用户可以像操作Mysql数据库表一样的操作数据,而不需要写代码,更不需要手工的对代码进行调优。另外,SQL作为一个非程序员可操作的语言,学习成本很低,如果一个系统提供 SQL支持,将很容易被用户接受。 |
1 | <dependency> |
1 | 如果你想在 本地 IDE中运行程序,还需要添加下面的依赖 |
1 | 如果你用到了老的执行引擎,还需要添加下面这个依赖 |
1 | 注意:由于部分table相关的代码是用Scala实现的,所以,这个依赖也是必须的。【这个依赖我们在前面开发DataStream程序的时候已经添加过了】 |
1 | Table API和SQL通过join API集成在一起,这个join API的核心概念是Table,Table可以作为查询的输入和输出。 |
Table API 和SQL的使用
创建TableEnvironment对象
1 | 想要使用Table API和SQL,首先要创建一个TableEnvironment对象。 |
scala
1 | package com.imooc.scala.tablesql |
java
1 | package com.imooc.java.tablesql; |
Table API和 SQL的使用
1 | 下面我们来演示一下Table API和SQL的使用 |
scala

1 | package com.imooc.scala.tablesql |

1 | 注意:针对SQL建表语句的写法还有一种比较清晰的写法 |
java
1 | package com.imooc.java.tablesql; |
DataStream、DataSet和Table之间的互相转换
1 | Table API和SQL可以很容易的和DataStream和DataSet程序集成到一块。通过TableEnvironment,可以把DataStream或者DataSet注册为Table,这样就可以使用Table API和SQL查询了。通过 |
使用DataStream创建表
1 | 1:使用DataStream创建表,主要包含下面这两种情况 |
scala
1 | package com.imooc.scala.tablesql |
java
1 | package com.imooc.java.tablesql; |
使用DataSet创建表
1 | 注意:此时只能使用旧的执行引擎,新的Blink执行引擎不支持和DataSet转换 |
scala
1 | package com.imooc.scala.tablesql |
java
1 | package com.imooc.java.tablesql; |
1 | 将Table转换为DataStream或者DataSet时,你需要指定生成的 DataStream或者DataSet的数据类型,即,Table 的每行数据要转换成的数据类型。通常最方便的选择是转换成Row。以下列表概述了不同选项的功能: |
将Table转换为DataStream
1 | 3:将表转换成DataStream流式查询的结果Table会被动态地更新,即每个新的记录到达输入流时结果就会发生变化。因此,转换此动态查询的DataStream需要对表的更新进行编码。 |
scala
1 | package com.imooc.scala.tablesql |

java
1 | package com.imooc.java.tablesql; |
将表转换成DataSet
scala
1 | package com.imooc.scala.tablesql |

java
1 | package com.imooc.java.tablesql; |