Flink StreamExcutionEnvironment vs ExecutionEnvironment



我在https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/dev/dataset/overview/

在我看来:

  1. 对于批处理,我需要ExecutionEnvironment,就像val env = ExecutionEnvironment.getExecutionEnvironment一样
  2. 对于流,我需要StreamExecutionEnvironmetn,就像val env = StreamExecutionEnvironment.getExecutionEnvironment一样

我已经对这些执行环境感到困惑了。由于Flink被认为是统一的批处理框架,我认为执行环境的创建应该只有one,例如:

流的val env = ExecutionEnvironment.getExecutionEnvironment("streaming mode "),以及val env = ExecutionEnvironment.getExecutionEnvironment("batch mode")

我想问一下为什么执行环境是分开的。当涉及到执行环境时,我总是感到困惑,包括表执行环境。我想我没有领会设计的考虑因素。

API现在有点令人困惑。但社区正在努力消除这种遗留问题并统一API。

在早期,Flink最初是一个批处理处理器,拥有流媒体运行时。因此,具有ExecutionEnvironment的数据集API被公开用于批处理。

(数据集API即将报废,将很快被弃用。(

随后,Flink通过带有StreamExecutionEnvironment的DataStream API公开了流运行时。这是目前的主要API之一。它的愿景是处理无界有界流。由于批处理只是流处理的一种特殊情况,因此可以将其归类为有界流处理。

带有TableEnvironment的API表是第一个将两个世界完全统一在一个API中的API。DataStream API当前正在接收批处理执行模式,以便更快地处理有界流。所有这些都已经存在于表API中。

相关内容

  • 没有找到相关文章

最新更新