Flink FORWARD 连接的运算符之间的数据序列化内部
Data serialization internals between Flink FORWARD-connected operators
据我了解,可以链接由数据转发连接连接的运算符。如果它们被链接在一起,则它们之间只会发生防御性副本(默认情况下)。
鉴于此执行图:
- Transaction Source 中的所有操作员是否共享 reference/defensive 份数据?
- 事务源和动态分区之间发生了什么?它们被链接是因为它是 FORWARD 数据连接(并且它只是因为广播而在视觉上分开)?
链式运算符始终显示为一项任务。因此,所有由 ->
分隔的运算符都链接在您的来源中。
动态部分没有链接,因为它有多个输入。虽然 Flink 支持多输入链运算符,但在 DataStream API 中实现起来并不推荐。 Table API/SQL 将使用该机制自动将所有内容合并到一个任务中。 [1]
对于非链式前向通道,数据通过本地网络通道发送。所以它被序列化并分成缓冲区,但它没有访问网络接口。
[1] https://developpaper.com/flink-sql-performance-optimization-multiple-input/
据我了解,可以链接由数据转发连接连接的运算符。如果它们被链接在一起,则它们之间只会发生防御性副本(默认情况下)。
鉴于此执行图:
- Transaction Source 中的所有操作员是否共享 reference/defensive 份数据?
- 事务源和动态分区之间发生了什么?它们被链接是因为它是 FORWARD 数据连接(并且它只是因为广播而在视觉上分开)?
链式运算符始终显示为一项任务。因此,所有由 ->
分隔的运算符都链接在您的来源中。
动态部分没有链接,因为它有多个输入。虽然 Flink 支持多输入链运算符,但在 DataStream API 中实现起来并不推荐。 Table API/SQL 将使用该机制自动将所有内容合并到一个任务中。 [1]
对于非链式前向通道,数据通过本地网络通道发送。所以它被序列化并分成缓冲区,但它没有访问网络接口。
[1] https://developpaper.com/flink-sql-performance-optimization-multiple-input/