Flink SQL 和 Table API入门教程(一)


前言

Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。而flinkSQL是flink当中最为简单直接的实现形式,适合快速上手。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是 Table API 和 Flink SQL

flink是追求批流统一的框架,也就是能够同时处理批数据和流数据的框架。批流统一的框架对于业务来说具有重大意义,因为传统的框架批流分开,在业务上会造成很多问题和麻烦,而实现的批流统一的框架就可以用一个框架一套代码实现多个业务,具有很大的优势。而flinkSQL和table aoi就是批流统一的上层处理API,目前发展特别快。flinkSQL实现了基于SQL标准的Apache Calcite Apache开源 SQL解析工具,可以直接在代码中写SQL,来实现业务操作。而table API是内嵌在java和scala中的查询api,允许我们用直观的方式来组合一些关系运算符的查询(比如select、filter和join)。两者结合起来就能够对流数据做很多的处理。

二、初始准备:引入依赖

Table API和 SQL需要引入的依赖有两个 planner和 bridge。

<dependency>
     <groupId>org.apache.flink</groupId>
     <artifactId>flink-table-planner_2.11</artifactId>
     <version>1.10.0</version>
</dependency> 
<dependency>
     <groupId>org.apache.flink</groupId>
     <artifactId>flink-table-api-scala-bridge_2.11</artifactId>
     <version>1.10.0</version>
</dependency>
     flink table planner planner计划器, 是 table API最主要的部分,提供了运行时环境和 生

成程序执行计划的 planner;
flink table api scala bridge bridge桥接器,主要负责 table API和 DataStream/DataSet API的连接支持,按照语言分 java和 scala。这里的两个依赖,是IDE环境下运行需要 添加的;如果是生产环境, lib目录下默认已经有了 planner,就只需要有 bridge就可以了。
当然,如果想使用用户自定义函数,或是跟 kafka做连接, 需要有一个 SQL client,这个包含在 flink table common里。

三、两种 (planner old & blink)的区别

1.批流统一

blink将批处理视为流式处理的特殊情况。所以,blink不支持表和dataset之间的转换,批处理作业也不会转换为dataset应用程序,而是跟流式处理一样,转换为datastream程序来处理。

2.BatchTableSource的支持性

由于是批流统一的框架,Blink planner也 不支持 BatchTableSource,而 使用 有界的
StreamTableSource代替 。

3.ExternalCatalog

Blink planner只支持全新的目录,不支持已弃用的 ExternalCatalog。

4.FilterableTableSource实现不兼容

     旧 planner和 Blink planner的 FilterableTableSource实现不兼容。旧的 planner会把

PlannerExpressions下推到 filterableTableSource中,而 blink planner则会把 Expressions下推。

5.基于字符串的键值配置选项

   基于字符串的键值配置选项仅 适用于 Blink planner。

6.PlannerConfig

  plannerConfig在两个 planner中的实现不同。

7.DAG优化

  Blink planner会将 多个 sink优化在一个 DAG中 (仅在 TableEnvironment上受支持,而

在 StreamTableEnvironment上不受支持)。 而旧 planner的 优化 总是将每一个 sink放在 一个新的 DAG中 ,其中所有 DAG彼此独立。

8.目录统计

  旧的 planner不支持目录统计,而 Blink planner支持 。

blink的planner相比起old版本planner各方面都有很大的改进,不过由于blink版本的是新出的功能,flink官网也说了暂时不建议在生产环境用blink版本,所以我们引入的还是old版本依赖,等blink成熟,经受住考验之后在迁移过去。

总结

第一章给大家讲了一些入门知识,看完之后可以对flinkSQL和table api有基础的概念和认知。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值