Apache flink ApacheFlink:ConnectedStreams中ValueState的作用域
我有一个自定义的Apache flink ApacheFlink:ConnectedStreams中ValueState的作用域,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我有一个自定义的RichCoFlatMapFunction,它使用ValueState成员。医生说 键/值接口的作用域为当前输入元素的键 看 如果我在连接的流上键入以下内容会怎么样: val connected = streamA .connect(streamB) .keyBy(a=>a.foo, b=>b.bar) .flatMap(new MyRichCoFlatMapFunction) 那么语义是怎样的呢?它是键入第一个、第二个还是两者的组合?key
RichCoFlatMapFunction
,它使用ValueState
成员。医生说
键/值接口的作用域为当前输入元素的键
看
如果我在连接的流上键入以下内容会怎么样:
val connected = streamA
.connect(streamB)
.keyBy(a=>a.foo, b=>b.bar)
.flatMap(new MyRichCoFlatMapFunction)
那么语义是怎样的呢?它是键入第一个、第二个还是两者的组合?keyBy的第一个参数(
a=>a.foo
)定义了第一个流的键(streamA
)。第二个参数(b=>b.bar
)是第二个流(streamB
)的键。两个参数必须返回相同类型的键,即a.foo
和b.bar
的类型必须相同
然后,connect操作员将使用相同的键从streamA
和streamB
向同一操作员发送所有记录。有状态的RichCoFlatMapFunction
将为当前元素的键设置ValueState
,即,如果flatMap1(a:TypeA,out:Collector[TypeOut])
调用streamA
中的值,则为键a.foo
和flatMap2(b:TypeB,out:Collector[TypeOut])设置状态为streamB
中的值调用,状态为键b.bar