Flink流式处理框架中的Table API和Flink SQL

本文详细介绍了Flink的Table API和SQL,包括它们的统一批流处理API、TableEnvironment的创建与配置、表的注册与查询、DataStream与Table的相互转换、输出操作、时间特性和窗口操作。此外,还讨论了用户自定义函数(UDF)如标量函数、表函数和聚合函数的实现。
摘要由CSDN通过智能技术生成

一、Table  API和Flink  SQL是什么?

1)Flink对批处理和流处理,提供了统一的上层API;

2)Table  API是一套内嵌在Java和Scala语言中的查询API,它允许以非常直观的方式组合来自一些关系运算符的查询;

3)Flink的SQL支持基于实现了SQL标准的Apache  Calcite;

 

1、基本程序结构

1)Table  API和SQL的程序结构,与流式处理的程序结构十分类似

2、创建TableEnvironment

1)创建表的执行环境,需要将flink流处理的执行环境传入;

2)TableEnvironment是flink中集成Table API和SQL的核心概念,所有对表的操作都基于TableEnvironment

      —— 注册Catalog

      —— 在Catalog中注册表

      —— 执行SQL查询

      —— 注册用户自定义函数(UDF)

 

3、配置TableEnvironment

1)配置老版本planner的流式查询

2)配置老版本planner的批式查询

3)配置blink  planner的流式查询

 4)配置blink  planner的批式查询

 

二、表(Table)

1)TableEnvironment可以注册目录Catalog,并可以基于Catalog注册表;

2)表(Table)是由一个“标识符”(identifier)来指定的,由3部分组成:Catalog名、数据库(database)名和对象名;

3)表可以是常规的,也可以是虚拟的(视图,View);

4)常规表(Table)一般可以用来描述外部数据,比如文件、数据库表或消息队列的数据,也可以直接从DataStream转换而来;

5)视图(View)可以从现有的表中创建,通常是Table  API或者SQL查询的一个结果表;

 

1、创建表

1)TableEnvironment可以调用.connect()方法,连接外部系统,并调用.createTemporaryTable()方法,在Catalog中注册表;

2)可以创建Table来描述文件数据,它可以从文件中读取,或者将数据写入文件

 

2、表的查询——Table  API

1)Table  API是集成在Scala和Java语言内的查询API;

2)Table API基于代表“表”的Table类,并提供一整套操作处理的方法API;这些方法会返回一个新的Table对象,表示对输入表应用转换操作的结果;

3)有些关系型转换操作,可以由多个方法调用组成,构成链式调用结构;

4)Flink的SQL集成,基于实现了SQL标准的Apache Calcite;

5)在Flink中,用常规字符串来定义SQL查询语句;

6)SQL查询的结果,也是一个新的Table;

 

3、将DataStream转换成表

1)对于一个DataStream,可以直接转换成Table,进而方便地调用Table API做转换操作;

2)默认转换后的Table schema和DataStream中的字段定义一一对应,也可以单独指定出来;

 

4、数据类型与Schema的对应

1)DataStream中的数据类型,与表的Schema之间的对应关系,可以有两种:基于字段名称,或者基于字段位置;

2)基于名称(name-based)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值