加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

Apache Flink 漫谈系列 - SQL概览

发布时间:2018-11-17 17:27:07 所属栏目:教程 来源:孙金城
导读:副标题#e# 一、SQL简述 SQL是Structured Query Language的缩写,最初是由美国计算机科学家Donald D. Chamberlin和Raymond F. Boyce在20世纪70年代早期从 Early History of SQL 中了解关系模型后在IBM开发的。该版本最初称为[SEQUEL: A Structured English Q

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

Apache Flink 漫谈系列 - SQL概览

如上所示,一个完整的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中:

  • 下载源码:
    1. // 下载源代码 
    2. git clone https://github.com/apache/flink.git study 
    3. // 进入源码目录 
    4. cd study 
    5. // 拉取稳定版release-1.6 
    6. git fetch origin release-1.6:release-1.6 
    7. //切换到稳定版 
    8. git checkout release-1.6 
    9. //将依赖安装到本地mvn仓库,耐心等待需要一段时间 
    10. mvn clean install -DskipTests 
  • 导入到IDEA:将Flink源码导入到IDEA过程这里不再占用篇幅,导入后确保在IDEA中可以运行 org.apache.flink.table.runtime.stream.sql.SqlITCase 并测试全部通过,即证明体验环境已经完成。如下图所示:
  • Apache Flink 漫谈系列 - SQL概览

如上图运行测试后显示测试通过,我们就可以继续下面的Apache Flink SQL功能体验了。

(2) 依赖Flink包方式

我们还有一种更简单直接的方式,就是新建一个mvn项目,并在pom中添加如下依赖:

  1. <properties> 
  2. <table.version>1.6-SNAPSHOT</table.version> 
  3. </properties> 
  4.  
  5. <dependencies> 
  6. <dependency> 
  7. <groupId>org.apache.flink</groupId> 
  8. <artifactId>flink-table_2.11</artifactId> 
  9. <version>${table.version}</version> 
  10. </dependency> 
  11.  
  12. <dependency> 
  13. <groupId>org.apache.flink</groupId> 
  14. <artifactId>flink-scala_2.11</artifactId> 
  15. <version>${table.version}</version> 
  16. </dependency> 
  17.  
  18. <dependency> 
  19. <groupId>org.apache.flink</groupId> 
  20. <artifactId>flink-streaming-scala_2.11</artifactId> 
  21. <version>${table.version}</version> 
  22. </dependency> 
  23.  
  24. <dependency> 
  25. <groupId>org.apache.flink</groupId> 
  26. <artifactId>flink-streaming-java_2.11</artifactId> 
  27. <version>${table.version}</version> 
  28. </dependency> 
  29.  
  30. <dependency> 
  31. <groupId>JUnit</groupId> 
  32. <artifactId>JUnit</artifactId> 
  33. <version>4.12</version> 
  34. </dependency> 
  35.  
  36. </dependencies> 

完成环境准备后,我们开始准备测试数据和写一个简单的测试类。

2. 示例数据及测试类

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读