介绍
Flink提供了像 操作 表 的API 和 像执行 SQL语句 的 API。这样很 方便 的让大家进行数据处理。
Table API 是一套内嵌在 Java 和 Scala 语言中的查询API,它允许以非常直观的方式组合来自一些关系运算符的查询
Flink 的 SQL 支持基于实现了 SQL 标准的 Apache Calcite
Table API和SQL接口彼此集成
为什么需要SQL
使用之前的 API,编写代码复杂,编码量大,难度也大
Table API 是一种关系型API,用户可以像操作 表 一样地操作数据(即关系型API),非常的 直观和方便。
SQL 作为 程序员必会的语言 ,如果一个引擎提供 SQL,很容易被开发人员接受
Table & SQL API 统一 流处理 和 批处理 的API,执行时,也做了一定优化
1.11之前
官方说明还不够完善
官网:https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/
Please note that the Table API and SQL are not yet feature complete and are being actively developed. Not all operations are supported by every combination of [Table API, SQL] and [stream, batch] input.
性能对比
flink SQL 还不如 spark SQL
一般程序执行耗时: spark SQL < flink SQL < hive
Blink Planner
在 Flink 1.9 中,Table 模块迎来了核心架构的升级,引入了阿里巴巴 Blink 团队贡献的诸多功能,
依赖
flink 1.11以后
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_2.12</artifactId>
<version>${flink.version}</version>
</dependency>
