gpt4 book ai didi

apache-flink - Flink 对象重用 : modify input objects?

转载 作者:行者123 更新时间:2023-12-04 10:28:40 25 4
gpt4 key购买 nike

我有一个 Flink 流应用程序,它在 Kyro.copy 中花费了大约 20% 的 CPU 时间。我可以通过打开对象重用模式来避免这种情况,但我有一个小问题:我想修改我的运算符的输入对象。

对象重用模式的一般契约似乎声明:从 map 函数返回后不要修改输入对象或记住输入对象。您可以在 output 之后修改对象并重新发出它们。 (例如:Slide 6)

现在,我的问题是:如果我在 output 之后立即处理对对象的所有引用- 从我的运算符(operator)那里获取它们,修改输入对象是否安全?或者是否有其他一些规则组合可以安全地修改输入对象?

最佳答案

是的,这样会很安全。但请注意,立即处置也意味着您不能将它们用作映射中的键,这也意味着堆状态后端(您可以将其用于查找,但需要在修改时创建副本)。所以对于简单的 map 链,它应该工作得很好,但在使用连接、窗口和分组之前,我会仔细检查它或在适当的地方创建我自己的防御副本。

顺便说一句,如果你想提高性能,几乎总是建议放弃 Kryo 序列化。如果有的话,Kryo 会减慢任何网络流量。如果是这样,请尝试使用 POJO、一些支持良好的格式(如 Avro),或者编写自己的序列化程序。这肯定会比对象重用更能提高性能。如果您没有任何网络 channel ,则本段不适用。

关于apache-flink - Flink 对象重用 : modify input objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60518520/

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