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