TableEnvironment是使用SQL API永远都离不开的一个接口,是SQL API使用的入口(上下文),包含了Flink任务运行时的所有上下文环境信息。其地位类似于Java DataStream API中的StreamExecutionEnvironment。在创建TableEnvironment后,用户可以在其中进行表的注册、SQL查询、UDF(用户自定义函数)管理等一系列操作。
关于Flink SQL&Table API的运行环境,以下是一些关键要点:
- 创建TableEnvironment:这是使用Flink SQL和Table API的第一步。用户可以通过设置环境信息(如流式处理或批处理模式)来创建TableEnvironment实例。此外,用户还可以通过已有的StreamExecutionEnvironment来创建TableEnvironment。
- 注册和管理表:在TableEnvironment中,用户可以注册和管理表。这些表可以是描述外部数据的常规表(如文件、数据库表或消息队列的数据),也可以是直接从DataStream或DataSet转换而来的表。此外,用户还可以创建视图,视图通常是从现有的表中创建的,代表了一个SQL逻辑查询的结果。
- 执行SQL查询:在TableEnvironment中,用户可以编写和执行SQL查询。Flink会解析和执行这些查询,并返回查询结果。对于流式输入,查询会生成一个连续查询,结果会生成一个新的动态表,该表会随输入表的更改而不断更新。
-
依赖管理:在使用Flink SQL和Table API时,需要引入一些依赖。这些依赖包括planner(计划器)和bridge(桥接器)。Planner是Table API最主要的部分,提供了运行时环境和生成程序执行计划的planner。而bridge则主要负责Table API和DataStream/DataSet API的连接支持。
总之,Flink SQL和Table API为流式和批式数据处理提供了强大的工具。通过创建和管理TableEnvironment、注册和管理表、执行SQL查询以及管理依赖等步骤,用户可以在Flink中高效地处理和分析数据。