flink 广播流和广播状态
flink broadcast stream and broadcast state
关于广播流和广播状态,我得到了以下两个问题,请问有人能帮忙解答一下吗?谢谢!
- KeyedBroadcastProcessFunction#Context有下面的方法(getBroadcastState),请问广播状态为什么要用map状态描述符?我认为广播状态应该使用 BroadcastStateDescriptor 之类的东西,地图状态描述符用于 MapState?
public abstract <K, V> BroadcastState<K, V> getBroadcastState(final
MapStateDescriptor<K, V> 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 中创建描述符并在需要时获取广播状态,其中操作员接收广播元素并更新广播状态。
MapState
是Flink支持广播的那种状态(也是唯一一种状态)。由于广播状态始终是 MapState
,MapStateDescriptor
是用来处理它的。
Flink 需要知道如何序列化正在广播的数据; broadcastStateDescriptors
被 DataStream#broadcast
用于此目的。
关于广播流和广播状态,我得到了以下两个问题,请问有人能帮忙解答一下吗?谢谢!
- KeyedBroadcastProcessFunction#Context有下面的方法(getBroadcastState),请问广播状态为什么要用map状态描述符?我认为广播状态应该使用 BroadcastStateDescriptor 之类的东西,地图状态描述符用于 MapState?
public abstract <K, V> BroadcastState<K, V> getBroadcastState(final MapStateDescriptor<K, V> 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 中创建描述符并在需要时获取广播状态,其中操作员接收广播元素并更新广播状态。
MapState
是Flink支持广播的那种状态(也是唯一一种状态)。由于广播状态始终是MapState
,MapStateDescriptor
是用来处理它的。Flink 需要知道如何序列化正在广播的数据;
broadcastStateDescriptors
被DataStream#broadcast
用于此目的。