我找到了方法 public ValueStateDescriptor(String name,TypeInformation<T> typeInfo,T defaultValue) 现在已弃用,文档说明通过检查状态的内容是否为null来管理默认值。我想知道这个建议有什么用?
public ValueStateDescriptor(String name,TypeInformation<T> typeInfo,T defaultValue)
bmp9r5qi1#
看看flink-5155,它引入了反对意见:在描述符中使用默认值对于某些序列化程序来说是有问题的,而且我们不会丢失一个特性,因为用户总是可以检查空值,并在必要时使用自己的默认值进行初始化。现在,我们总是强迫人们指定一个默认值,即使他们不需要。以及相应的pr:https://github.com/apache/flink/pull/3108
lmvvr0a82#
此外,如果您在(rich)函数中使用这个函数,那么您应该按照以下方式在主函数中检查null,如 map() 或者 flatMap() ,不是 open() :
map()
flatMap()
open()
if( state.value() == null ) { state.update(...defaultValue...); } ``` `open()` 不喜欢使用 `state.update()` 在里面。
2条答案
按热度按时间bmp9r5qi1#
看看flink-5155,它引入了反对意见:
在描述符中使用默认值对于某些序列化程序来说是有问题的,而且我们不会丢失一个特性,因为用户总是可以检查空值,并在必要时使用自己的默认值进行初始化。现在,我们总是强迫人们指定一个默认值,即使他们不需要。
以及相应的pr:https://github.com/apache/flink/pull/3108
lmvvr0a82#
此外,如果您在(rich)函数中使用这个函数,那么您应该按照以下方式在主函数中检查null,如
map()
或者flatMap()
,不是open()
: