FlinkSql源码调试环境&flink-table代码结构

2022-11-25 19:58:50 浏览数 (1)

这篇搭一下flink1.15的源码环境,看一下flink-table代码的结构,后面每周看一些代码,把flinksql玩好。

基础环境准备

安装IDE、jdk(1.8) 、maven(3.8.4)、IDE安装scala插件、IDE配制maven

这些都是之前装sparksql环境时已经装好的,可以直接用

flink源码导入IDE

git地址:https://github.com/apache/flink.git

切branch1.15

拉下来的是master的代码,我习惯看某个具体版本的源码,方便按版本定位问题,所以,需要切一下branch

编译源码

在刚拉好的源码包下执行:

mvn clean install -DskipTests

为项目配制一下jdk

运行测试类

经过上面的一波操作之后,环境就准备好了,接下来跑测试类试一把,如果没报错就算是ok了。

跑一下flink-sql-parser下的测试类,测试没有问题。

flink-table的代码结构

Common

flink-table-common:

这个包中主要是包含 Flink Planner和 Blink Planner一些共用的代码,比如:类型系统定义、UDF堆栈和内置函数定义、内部数据定义、catalogs, formats, connectors 的扩展点等等。

API

flink-table-api-java:

这部分是用户编程使用的 API,包含Table API and SQL 的Java API,是所有planner功能的入口点,比如TableEnvironmentImpl类。

flink-table-api-scala:

Table API and SQL 的Scala API。

flink-table-api-bridge-base:

bridge 桥接器,用于在Table API and DataStream API 之间连接的API的基类。

flink-table-api-java-bridge:

bridge 桥接器,用于在Table API and DataStream API 之间连接的Java API。

flink-table-api-scala-bridge:

bridge 桥接器,用于在Table API and DataStream API 之间连接的scala API。

flink-table-api-java-uber:

绑定flink-table-common和所有Java API模块,包括到数据流API和第三方依赖的桥接,该模块由flink dist使用,而不是直接由用户使用。

Runtime

flink-table-code-splitter:

用于拆分生成的Java代码的工具,以便每个方法不超过64KB的限制。

flink-table-runtime:

运行时核心代码,包含运算符实现、内置函数实现、类型系统实现,读写器、转换器等。

Parser and planner

flink-sql-parser:

默认ANSI sql解析器实现。

flink-sql-parser-hive:

hivesql方言解析器实现。

flink-table-planner:

planner 计划器,是 table API 最主要的部分,提供了运行时环境和生成程序执行计划的 planner,包含AST与语义树、SQL validator 、planner、优化器和规则实现、代码生成器等。

flink-table-planner-loader-bundle:

flink-table-planner的捆绑包。

flink-table-planner-loader:

flink-table-plannerr的加载器。

SQL client

flink-sql-client:

将查询提交到Flink群集的CLI工具。

Testing

flink-table-test-utils:

测试包,提供一些测试实用工具。

0 人点赞