我们做任何数据计算都离不开读取原始数据,计算逻辑和写入计算结果数据三部分,当然基于Apache Flink SQL编写的计算Job也离不开这三个部分,如下所示:

如上所示,一个完整的Apache Flink SQL Job 由如下三部分:
- Source Operator - Soruce operator是对外部数据源的抽象, 目前Apache Flink内置了很多常用的数据源实现,比如上图提到的Kafka。
- Query Operators - 查询算子主要完成如图的Query Logic,目前支持了Union,Join,Projection,Difference, Intersection以及window等大多数传统数据库支持的操作。
- Sink Operator - Sink operator 是对外结果表的抽象,目前Apache Flink也内置了很多常用的结果表的抽象,比如上图提到的Kafka。
四、Flink SQL 核心算子
目前Flink SQL支持Union,Join,Projection,Difference, Intersection以及Window等大多数传统数据库支持的操作,接下来为大家分别进行简单直观的介绍。
1. 环境
为了很好的体验和理解Apache Flink SQL算子我们需要先准备一下测试环境,我们选择IDEA,以ITCase测试方式来进行体验。IDEA 安装这里不占篇幅介绍了,相信大家能轻松搞定!我们进行功能体验有两种方式,具体如下:
(1) 源码方式
对于开源爱好者可能更喜欢源代码方式理解和体验Apache Flink SQL功能,那么我们需要下载源代码并导入到IDEA中:
- // 下载源代码
- git clone https://github.com/apache/flink.git study
- // 进入源码目录
- cd study
- // 拉取稳定版release-1.6
- git fetch origin release-1.6:release-1.6
- //切换到稳定版
- git checkout release-1.6
- //将依赖安装到本地mvn仓库,耐心等待需要一段时间
- mvn clean install -DskipTests
导入到IDEA:将Flink源码导入到IDEA过程这里不再占用篇幅,导入后确保在IDEA中可以运行 org.apache.flink.table.runtime.stream.sql.SqlITCase 并测试全部通过,即证明体验环境已经完成。如下图所示:

如上图运行测试后显示测试通过,我们就可以继续下面的Apache Flink SQL功能体验了。
(2) 依赖Flink包方式
我们还有一种更简单直接的方式,就是新建一个mvn项目,并在pom中添加如下依赖:
- <properties>
- <table.version>1.6-SNAPSHOT</table.version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.flink</groupId>
- <artifactId>flink-table_2.11</artifactId>
- <version>${table.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.flink</groupId>
- <artifactId>flink-scala_2.11</artifactId>
- <version>${table.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.flink</groupId>
- <artifactId>flink-streaming-scala_2.11</artifactId>
- <version>${table.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.flink</groupId>
- <artifactId>flink-streaming-java_2.11</artifactId>
- <version>${table.version}</version>
- </dependency>
-
- <dependency>
- <groupId>JUnit</groupId>
- <artifactId>JUnit</artifactId>
- <version>4.12</version>
- </dependency>
-
- </dependencies>
完成环境准备后,我们开始准备测试数据和写一个简单的测试类。
2. 示例数据及测试类
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|