我是 Flink 新手,试图了解创建的 KeyedProcessFunction 实例的数量是否会根据我创建函数的位置而变化。
MyProcessFunction myFunction = new MyProcessFunction()
events.keyBy(value -> value.getKey())
.process(myFunction)
我从文档中了解到的是,如果我像这样创建它
events.keyBy(value -> value.getKey())
.process(new MyProcessFunction())
它将为流中的每个元素创建一个
MyProcessFunction
。我写了一个测试代码,但它只创建了一个。我错过了什么吗?另外,如果它创建多个元素,是为每个元素创建一个,还是为在 keyBy
方法中创建的每个 KeyedStream创建一个?
您拥有的两个变体声明(变量与内联声明)应解析为相同的作业图,因此除了语法首选项之外,不应有任何差异。
另外,如果它创建多个,是为每个元素创建一个还是为 keyBy 方法中创建的每个 KeyedStream 创建一个?
假设您正在对流进行键控,则会为流中的
每个键创建一个单独的
MyProcessFunction
实例,这样具有相同键的元素将流经操作符的相同实例(允许状态在他们之间共享)。