您现在的位置是:首页 >技术杂谈 >Flink StreamExecutionEnvironment网站首页技术杂谈

Flink StreamExecutionEnvironment

奔跑如风 2023-07-02 00:00:03
简介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来进行映射。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。