【问题标题】:will flink copy element in each stream or use the same object?flink 会在每个流中复制元素还是使用相同的对象?
【发布时间】:2021-04-24 02:20:21
【问题描述】:

如果两个操作员正在处理相同的上游,每个操作员是接收每个元素的副本还是正在处理相同的元素。 例如,在以下代码中:

DataStream<Data> stream=...; //init a stream of data
stream.process(ProcessFunctionA); //stream was processed by function A
stream.process(ProcessFunctionB); //stream was processed by function A

如果 ProcessFunctionA 更改数据,ProcessFunctionB 会看到更改吗?

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    默认情况下,Flink 在这种情况下会生成防御性副本。但是,如果您了解这样做的可能陷阱,您可以使用

    ExecutionConfig#enableObjectReuse()
    

    启用对象重用,这可能是一个有用的优化,因为它避免了不必要的副本及其最终的垃圾回收。

    请参阅Flink, rule of using 'object reuse mode',了解有关如何安全使用它的一些指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      相关资源
      最近更新 更多