专栏原创出处:github-源笔记文件 (opens new window) ,github-源码 (opens new window),欢迎 Star,转载请附上原文出处链接和本声明。
# 1 Environment 概览
该文档主要说明 Flink 作业执行时环境概念,根据不同作业情况选择不同的 Environment
。
大多数 API 提供了静态方法创建对应 Environment
,示例如下:
val bEnv: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
val btEnv: BatchTableEnvironment = BatchTableEnvironment.create(bEnv)
val sEnv: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
val stEnv: StreamTableEnvironment = StreamTableEnvironment.create(sEnv)
# 2 批处理(batch)
LocalEnvironment
本地模式执行RemoteEnvironment
提交到远程集群执行CollectionEnvironment
集合数据集模式执行OptimizerPlanEnvironment
不执行作业,仅创建优化的计划PreviewPlanEnvironment
提取预先优化的执行计划ContextEnvironment
用于在客户端上远程执行.DetachedEnvironment
用于在客户端上以分离模式进行远程执行
# 3 流处理(streaming)
LocalStreamEnvironment
本地模式执行RemoteStreamEnvironment
提交到远程集群执行StreamContextEnvironment
StreamPlanEnvironment
# 4 Table 模式处理
TableEnvironment
是创建 Table&SQL 的接口类,用于处理有界与无界数据。
主要职责:
连接外部系统数据源
注册和检索 Table 及从 catalog 获取其他元对象信息
执行 SQL 语句
提供配置信息
BatchTableEnvironment
Batch 处理模式的 Table ,主要处理 DataSet 与 Table 之间操作StreamTableEnvironment
streaming 处理模式的 Table , 主要处理 DataStream 与 Table 之间操作