我发现方法public ValueStateDescriptor(String name,TypeInformation<T> typeInfo,T defaultValue)
现在被弃用,文档中说通过检查状态的内容是否为null来管理默认值。我想知道这个建议有什么用?
查看引入折旧的FLINK-5155:
在描述符中使用默认值对某些serializers,我们不会失去一个功能,因为用户可以随时检查如果必需的现在,我们总是强迫人们指定一个默认值价值,即使他们不需要。
以及相应的PR:https://github.com/apache/flink/pull/3108
此外,如果您在(Rich(函数中使用此函数,则应在主函数(如map()
或flatMap()
(中以以下方式检查null,而不是open()
:
if( state.value() == null ) {
state.update(...defaultValue...);
}
open()
不关心在中使用state.update()
。