主页 > 新闻资讯 > 大数据学习:Flink SQL快速入门

大数据学习:Flink SQL快速入门

作者:张老师 浏览次数: 2021-03-10 17:37
Flink在大数据处理上,是流批一体的框架,针对于各种场景下的数据处理,也有一套Flink SQL的操作思路。今天的大数据学习分享,我们就来讲讲基本的Flink SQL快速入门。

Flink SQL,就是直接可以在代码中写SQL,来实现一些查询(Query)操作。Flink的SQL支持,基于实现了SQL标准的Apache Calcite(Apache开源SQL解析工具)。

大数据学习:Flink SQL快速入门

1、导入所需要的的依赖包

<dependency>
           <groupId>org.apache.flink</groupId>
           <artifactId>flink-table-planner_2.12</artifactId>
           <version>1.10.1</version>
       </dependency>
       <dependency>
           <groupId>org.apache.flink</groupId>
           <artifactId>flink-table-api-scala-bridge_2.12</artifactId>
           <version>1.10.1</version>
       </dependency>
       <dependency>
           <groupId>org.apache.flink</groupId>
           <artifactId>flink-csv</artifactId>
           <version>1.10.1</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里。

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

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

因为批流统一,Blink planner也不支持BatchTableSource,而使用有界的Blink planner只支持全新的目录,不支持已弃用的ExternalCatalog。

旧planner和Blink planner的FilterableTableSource实现不兼容。旧的planner会把PlannerExpressions下推到filterableTableSource中,而blink planner则会把Expressions下推。

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

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

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

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

3、表(Table)的概念

TableEnvironment可以注册目录Catalog,并可以基于Catalog注册表。它会维护一个Catalog-Table表之间的map。表(Table)是由一个标识符来指定的,由3部分组成:Catalog名、数据库(database)名和对象名(表名)。如果没有指定目录或数据库,就使用当前的默认值。

4、连接到文件系统(Csv格式)

连接外部系统在Catalog中注册表,直接调用tableEnv.connect()就可以,里面参数要传入一个ConnectorDescriptor,也就是connector描述器。对于文件系统的connector而言,flink内部已经提供了,就叫做FileSystem()。

关于大数据学习,Flink SQL快速入门,以上就为大家做了简单的介绍了。Flink SQL,其实与传统的SQL查询,大致也差不多,关键在于要学会在Flink框架下去理解和运用。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频资料可联系客服获取!
热点排行
推荐文章
立即申请>>