flink将复制每个流中的元素还是使用相同的对象?

smdnsysy  于 2021-07-15  发布在  Flink
关注(0)|答案(1)|浏览(429)

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

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会看到这些更改吗?

vngu2lb8

vngu2lb81#

默认情况下,flink会在这种情况下复制防御副本。但如果您了解这样做可能存在的陷阱,您可以使用

ExecutionConfig#enableObjectReuse()

启用对象重用,这可能是一个有用的优化,因为它避免了不必要的副本及其最终的垃圾收集。
请参阅flink,rule of using“object reuse mode”,了解有关如何安全使用该模式的一些指导。

相关问题