既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
- Catalog 管理:
Catalog
可以理解为 Flink 的MetaStore
,类似Hive MetaStore
对在 Hive 中的地位,关于 Flink Catalog 的详细内容后续进行介绍。 - 表管理:在 Catalog 中注册表。
- SQL 查询:(这 TMD 还用说,最基本的功能啊),就像 DataStream 中提供了
addSource
、map
、flatmap
等接口。 - UDF 管理:注册用户定义(标量函数:一进一出、表函数:一进多出、聚合函数:多进一出)函数。
- UDF 扩展:加载可插拔 Module(Module 可以理解为 Flink 管理 UDF 的模块,是可插拔的,可以让小伙伴萌自定义 Module,去支持奇奇怪怪的 UDF 功能)。
DataStream 和 Table(Table / SQL API 的查询结果)之间进行转换:目前
1.13
1.13
1.13 版本的只有流任务支持,批任务不支持。
1.14
1.14
1.14 支持批任务。
接下来介绍如何创建一个 TableEnvironment
。案例为 Java。
- 方法 1:通过
EnvironmentSettings
创建TableEnvironment
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.TableEnvironment;
// 1. 就是设置一些环境信息
EnvironmentSettings settings = EnvironmentSettings
.newInstance()
.inStreamingMode() // 声明为流任务
//.inBatchMode() // 声明为批任务
.build();
// 2. 创建 TableEnvironment
TableEnvironment tEnv = TableEnvironment.create(settings);
在
1.13
1.13
1.13 版本中:
- 如果你是
inStreamingMode
,则最终创建出来的TableEnvironment
实例为StreamTableEnvironmentImpl
。 - 如果你是
inBatchMode
,则最终创建出来的TableEnvironment
实例为TableEnvironmentImpl
。
它两虽然都继承了 TableEnvironment
接口,但是 StreamTableEnvironmentImpl
支持的功能更多一些。大家可以直接去看看接口实验一下,这里就不进行详细介绍。
- 方法 2:通过已有的
StreamExecutionEnvironment
创建TableEnvironment
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);
2.3 SQL 中表的概念(外部表 TABLE、视图 VIEW)
一个表的全名(标识)会由三个部分组成:Catalog 名称.数据库名称.表名称。如果 Catalog 名称或者数据库名称没有指明,就会使用当前默认值 default
。
举个例子,下面这个 SQL 创建的 Table 的全名为 default.default.table1
。
tableEnv.executeSql("CREATE TEMPORARY TABLE table1 ... WITH ( 'connector' = ... )");
下面这个 SQL 创建的 Table 的全名为 default.mydatabase.table1
。
tableEnv.executeSql("CREATE TEMPORARY TABLE mydatabase.table1 ... WITH ( 'connector' = ... )&