gpt4 book ai didi

java - Flink 中的局部变量

转载 作者:行者123 更新时间:2023-12-02 09:32:55 26 4
gpt4 key购买 nike

正在开发使用 Flink 的新项目并尝试理解一些对象决策。

因此,在 RichFlatMapFunction 中,有一个作为实例变量的 hashmap。每次进入flatmap时,hashmap都会立即被清除然后使用。我知道flink将flatmap函数分离在不同的线程上,但是以这种方式访问​​hashmap有任何风险吗?另外,这个 HashMap 是否应该是暂时的,这样它就只能本地化到该线程?

此外,稍后在平面图中创建了迭代器的局部变量。那么有没有比每次初始化这些对象然后等待垃圾收集器清理它们更好的方法呢?

我认为这个问题可能更多是一个分布式系统问题,但是任何信息或阅读链接都将不胜感激。

最佳答案

不存在 Flink 同时调用您的 RichFlatMapFunction.flatMap() 的风险方法,因此您无需担心创建线程局部变量。

通常你会声明一个类 private transient Map<blah, blah> myVariable ,然后在你的 RichFlatMapFunction.open() 中初始化它打电话。

关于您正在创建的每次调用迭代器的 GC,用我认识的最好的程序员之一(Bill Atkinson)的话来说,“测量,然后优化”:) 如果您的工作流程运行速度比您需要的慢,是时候挖掘一些性能测量工具了,但我敢打赌,迭代器的 GC Activity 不会导致任何缓慢的情况。

关于java - Flink 中的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57804639/

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