gpt4 book ai didi

apache-flink - 什么时候用transient,什么时候不用flink?

转载 作者:行者123 更新时间:2023-12-03 23:13:21 27 4
gpt4 key购买 nike

在这段代码中,我应该使用 transient ?

我什么时候可以使用 transient ?

有什么不同 ?

需要你的帮助

private              Map<String, HermesCustomConsumer> topicSourceMap                 = new ConcurrentHashMap();
private Map<TopicAndPartition, Long> currentOffsets = new HashMap<>();
private transient Map<TopicAndPartition, Long> restoredState;

最佳答案

TL;博士
如果您使用 transient变量,你最好在 open() 中实例化它实现Rich的运算符的方法界面。否则,同时声明具有初始值的变量。

您在此处使用的状态称为由用户自己管理的原始状态。您是否应该使用 transient修饰符取决于序列化目的。在提交 Flink 作业之前。计算拓扑将生成并分发到 Flink 集群中。包括 source 和 sink 在内的运算符将使用字段实例化,例如 topicSourceMap在你的代码中。变量 topicSourceMapcurrentOffsets已经用构造函数实例化了。虽然 restoredState是一个 transient 变量,因此无论您分配什么初始值,它都不会被序列化并分发到某些任务中执行。所以你通常需要在 open() 中实例化它实现Rich的运算符的方法界面。在某些任务中反序列化此运算符后,open()方法将被调用以实例化您自己的状态。

关于apache-flink - 什么时候用transient,什么时候不用flink?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55222822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com