Flink之Table

1.EnvironmentSettings类分析 

   这个类是初始化表环境参数的,这些参数仅在创建的时候设置,实例化之后无法改变  

成员变量
    //流模型
    public static final String STREAMING_MODE = "streaming-mode";
    //类的名称
	public static final String CLASS_NAME = "class-name";
    //默认的目录
	public static final String DEFAULT_BUILTIN_CATALOG = "default_catalog";
    //默认的数据库
	public static final String DEFAULT_BUILTIN_DATABASE = "default_database";
    //计划类
    private final String plannerClass;
    //执行类
    private final String executorClass;
    //构建的目录名称
    private final String builtInCatalogName;
    //构建的数据库名称
    private final String builtInDatabaseName;
    //是流的模式
    private final boolean isStreamingMode;
EnvironmentSettings 的方法
public static Builder newInstance() {return new Builder();}
public String getBuiltInCatalogName() {return builtInCatalogName;}
public String getBuiltInDatabaseName() {return builtInDatabaseName;}
public boolean isStreamingMode() {return isStreamingMode;}
//HashMap 存放是流模型的话讲类名和计划类放入kv 中
public Map<String, String> toPlannerProperties() {
		Map<String, String> properties = new HashMap<>(toCommonProperties());
		if (plannerClass != null) {
			properties.put(CLASS_NAME, plannerClass);
		}
		return properties;
	}
//HashMap 存放是流模型的话讲类名和执行类放入kv 中
public Map<String, String> toExecutorProperties() {
		Map<String, String> properties = new HashMap<>(toCommonProperties());
		if (executorClass != null) {
			properties.put(CLASS_NAME, executorClass);
		}
		return properties;
	}
//放回存放的Map 是否是流处理模式
private Map<String, String> toCommonProperties() {
		Map<String, String> properties = new HashMap<>();
		properties.put(STREAMING_MODE, Boolean.toString(isStreamingMode));
		return properties;
	}
EnvironmentSettings 类的成员方法是私有化的,因此无法通过new一个EnvironmentSettings 来创建对象,
但是flink提供了一个newInstance方法可以创建一个Builder的对象  

2.Builder 类

成员变量
//存放着 计划和执行类的全类名    默认是流处理模式
        private static final String OLD_PLANNER_FACTORY ="org.apache.flink.table.planner.StreamPlannerFactory";
		private static final String OLD_EXECUTOR_FACTORY = "org.apache.flink.table.executor.StreamExecutorFactory";
		private static final String BLINK_PLANNER_FACTORY = "org.apache.flink.table.planner.delegation.BlinkPlannerFactory";
		private static final String BLINK_EXECUTOR_FACTORY = "org.apache.flink.table.planner.delegation.BlinkExecutorFactory";

		private String plannerClass = OLD_PLANNER_FACTORY;
		private String executorClass = OLD_EXECUTOR_FACTORY;
		private String builtInCatalogName = DEFAULT_BUILTIN_CATALOG;
		private String builtInDatabaseName = DEFAULT_BUILTIN_DATABASE;
		private boolean isStreamingMode = true;
方法 
// 使用旧的执行计划 默认的
        public Builder useOldPlanner() {
			this.plannerClass = OLD_PLANNER_FACTORY;
			this.executorClass = OLD_EXECUTOR_FACTORY;
			return this;
		}

//使用blink计划   可设置
		public Builder useBlinkPlanner() {
			this.plannerClass = BLINK_PLANNER_FACTORY;
			this.executorClass = BLINK_EXECUTOR_FACTORY;
			return this;
		}

//不设置 计划类    和执行类 都等于null 
		public Builder useAnyPlanner() {
			this.plannerClass = null;
			this.executorClass = null;
			return this;
		}

//设置为批处理模式
		public Builder inBatchMode() {
			this.isStreamingMode = false;
			return this;
		}

//设置为流处理模式  默认的
		public Builder inStreamingMode() {
			this.isStreamingMode = true;
			return this;
		}

//设置目录名称
		public Builder withBuiltInCatalogName(String builtInCatalogName) {
			this.builtInCatalogName = builtInCatalogName;
			return this;
		}

//设置数据库的名称
		public Builder withBuiltInDatabaseName(String builtInDatabaseName) {
			this.builtInDatabaseName = builtInDatabaseName;
			return this;
		}

//创建  一个 EnvironmentSettings 类的实例化
		public EnvironmentSettings build() {
			return new EnvironmentSettings(
				plannerClass,
				executorClass,
				builtInCatalogName,
				builtInDatabaseName,
				isStreamingMode);
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 整体介绍 2 1.1 什么是 Table API 和 Flink SQL 2 1.2 需要引入的依赖 2 1.3 两种 planner(old & blink)的区别 4 第二章 API 调用 5 2.1 基本程序结构 5 2.2 创建表环境 5 2.3 在 Catalog 中注册表 7 2.3.1 表(Table)的概念 7 2.3.2 连接到文件系统(Csv 格式) 7 2.3.3 连接到 Kafka 8 2.4 表的查询 9 2.4.1 Table API 的调用 9 2.4.2 SQL 查询 10 2.5 将 DataStream 转换成表 11 2.5.1 代码表达 11 2.5.2 数据类型与 Table schema 的对应 12 2.6. 创建临时视图(Temporary View) 12 2.7. 输出表 14 2.7.1 输出到文件 14 2.7.2 更新模式(Update Mode) 15 2.7.3 输出到 Kafka 16 2.7.4 输出到 ElasticSearch 16 2.7.5 输出到 MySql 17 2.8 将表转换成 DataStream 18 2.9 Query 的解释和执行 20 1. 优化查询计划 20 2. 解释成 DataStream 或者 DataSet 程序 20 第三章 流处理中的特殊概念 20 3.1 流处理和关系代数(表,及 SQL)的区别 21 3.2 动态表(Dynamic Tables) 21 3.3 流式持续查询的过程 21 3.3.1 将流转换成表(Table) 22 3.3.2 持续查询(Continuous Query) 23 3.3.3 将动态表转换成流 23 3.4 时间特性 25 3.4.1 处理时间(Processing Time) 25 3.4.2 事件时间(Event Time) 27 第四章 窗口(Windows) 30 4.1 分组窗口(Group Windows) 30 4.1.1 滚动窗口 31 4.1.2 滑动窗口 32 4.1.3 会话窗口 32 4.2 Over Windows 33 1) 无界的 over window 33 2) 有界的 over window 34 4.3 SQL 中窗口的定义 34 4.3.1 Group Windows 34 4.3.2 Over Windows 35 4.4 代码练习(以分组滚动窗口为例) 36 第五章 函数(Functions) 38 5.1 系统内置函数 38 5.2 UDF 40 5.2.1 注册用户自定义函数 UDF 40 5.2.2 标量函数(Scalar Functions) 40 5.2.3 表函数(Table Functions) 42 5.2.4 聚合函数(Aggregate Functions) 45 5.2.5 表聚合函数(Table Aggregate Functions) 47

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值