【发布时间】:2020-12-18 17:43:09
【问题描述】:
关于广播流和广泛的案例状态,我有以下两个问题,有人可以帮忙回答吗?谢谢!
- KeyedBroadcastProcessFunction#Context有如下方法(getBroadcastState),请问为什么广播状态要用map状态描述符?我认为广播状态应该使用 BroadcastStateDescriptor 之类的东西,而地图状态描述符用于 MapState?
public abstract
BroadcastState getBroadcastState(final MapStateDescriptor stateDescriptor);
- DataStream#broadcast方法定义如下:
def broadcast(broadcastStateDescriptors: MapStateDescriptor[_, _]*): BroadcastStream[T] = { if (broadcastStateDescriptors == null) { throw new NullPointerException("State Descriptors must not be null.") } javaStream.broadcast(broadcastStateDescriptors: _*) }
我会问broadcastStateDescriptors 的参数是做什么用的?为什么我必须在广播流时这么早提供它?我想我可以在需要时在 KeyedBroadcastProcessFunction#processBroadcastElement 中创建描述符并获取广播状态,其中操作员接收广播元素并更新广播状态。
【问题讨论】:
标签: apache-flink