You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Flink中RuntimeExecutionMode和ExecutionMode有什么区别?

两个类的官方定义

这是Flink 1.12版本之前为旧DataSet批处理API设计的枚举类,仅用于控制批处理场景下的数据交换策略,目前已被官方标记为废弃,新版本不推荐使用。
它的四个枚举值都是围绕数据交换逻辑定义的:

  • PIPELINED:默认流水线交换,上游产出数据后立即发往下游
  • PIPELINED_FORCED:强制使用流水线交换,禁止任何场景下回退到批量交换
  • BATCH:批量交换,上游所有数据计算完成后再统一发往下游
  • BATCH_FORCED:强制使用批量交换

这是Flink 1.12推出流批一体架构后新增的核心配置类,也是现在大家日常简称的ExecutionMode,用于控制整个Flink作业的全局运行时模式,会影响调度、容错、优化规则等全链路执行逻辑。
它的三个枚举值对应流批一体的三种执行策略:

  • STREAMING:流模式,默认值,所有数据走流水线交换,支持运行无界流作业
  • BATCH:批模式,针对有界数据集做了大量性能优化,仅支持运行有界作业,数据交换默认走批量策略
  • AUTOMATIC:自动模式,Flink根据输入源的有界性自动选择执行模式:所有输入都是有界的则用批模式,存在任意一个无界输入则用流模式

二者核心差异

  • 设计定位不同:ExecutionMode是旧批处理API的附属配置,仅控制数据交换逻辑;RuntimeExecutionMode是流批一体架构的核心顶层配置,定义整个作业的运行模式
  • 作用范围不同:ExecutionMode仅影响数据交换层策略;RuntimeExecutionMode会覆盖调度逻辑、任务生命周期、容错策略、SQL优化规则等全链路runtime行为
  • 功能兼容性不同:ExecutionMode对应的旧DataSet API不支持状态、窗口等流原生API;RuntimeExecutionMode的批模式完全兼容Flink的状态、窗口等核心API,批流可以用同一套代码逻辑实现
  • 维护状态不同:ExecutionMode已废弃,后续版本会被移除;RuntimeExecutionMode是当前官方唯一主推的执行模式配置

内容的提问来源于stack exchange,提问作者Jayden__

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 22:06:03