Flink KeyedProcessFunction 创建计数

问题描述 投票:0回答:1

我是 Flink 新手,试图了解创建的 KeyedProcessFunction 实例的数量是否会根据我创建函数的位置而变化。

MyProcessFunction myFunction = new MyProcessFunction()
events.keyBy(value -> value.getKey())
      .process(myFunction)

我从文档中了解到的是,如果我像这样创建它

events.keyBy(value -> value.getKey())
      .process(new MyProcessFunction())

它将为流中的每个元素创建一个

MyProcessFunction
。我写了一个测试代码,但它只创建了一个。我错过了什么吗?另外,如果它创建多个元素,是为每个元素创建一个,还是为在 keyBy 方法中创建的每个
KeyedStream
创建一个?

java stream apache-flink
1个回答
0
投票

您拥有的两个变体声明(变量与内联声明)应解析为相同的作业图,因此除了语法首选项之外,不应有任何差异。

另外,如果它创建多个,是为每个元素创建一个还是为 keyBy 方法中创建的每个 KeyedStream 创建一个?

假设您正在对流进行键控,则会为流中的

每个键
创建一个单独的MyProcessFunction实例,这样具有相同键的元素将流经操作符的相同实例(允许状态在他们之间共享)。

© www.soinside.com 2019 - 2024. All rights reserved.