您现在的位置是:首页 >技术杂谈 >Flink StreamExecutionEnvironment网站首页技术杂谈
Flink StreamExecutionEnvironment
1.分层API
最顶层:Table API/SQL,基于表来进行数据处理
中间层:核心层,DataStream API,流批一体的API
最底层:状态、时间等
2.方法
#1.executeSql
执行SQL语句,SQL语句:任何SQL都能执行
#2.createTemporaryTable
创建临时表
#3.from
读取某一张表
#4.groupBy
分组
#5.executeInsert
执行插入
#6.sqlQuery
只能执行查询的SQL(select语句)
3.创建方式
#1.方式一,推荐
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment()
StreamTableEnvironment tEnv = StreamTableEnvironment.create(env)
#2.方式二,不推荐
EnvironmentSettings settings = EnvironmentSettings.newInstance().inBatchMode().build();
TableEnvironment tEnv = TableEnvironment.create(settings);
4.Flink中的表
Flink中的表分为三种:
-
临时表
-
永久表
-
外部表
4.1临时表
临时表,就是一张在内存中被临时创建的表,不会永久存储。
它会随着进程/代码的执行而创建,随着任务的执行完成而销毁。
Flink中很多时候都是临时表。不会存储数据。
注意:Flink没有内部表的说法。和Hive不一样。
它只在这个进程中有效。别的用户看不到。
4.2永久表
Flink除了临时表之外,也有永久表。
永久表没办法直接创建,而必须依赖外部的catalog来创建。
catalog:元数据库
Hive的元数据库:MySQL中。
Flink的元数据库:在Flink的catalog中。
Hive表的层级关系:databas_name.table_name(库名.表名)
Flink表的层级关系:catalog_name.databas_name.table_name(元数据库名.库名.表名)
说明:Flink中永久表用的很少,除了Flink整合Hive,需要创建catalog来保存HIve中的表之外,其他地方用的很少。
我们了解即可。
4.3外部表
Flink基本上是外部表。因为Flink通过表来映射(读取)外部的数据源。
外部表就是用来映射外部数据源的。比如:MySQL、Kafka、FileSystem、Socket数据源等。
通过表的connector来进行映射。