为什么 Flink Stream 不支持左连接表达式?
Why Flink Stream not support left join expression?
Flink Stream 支持内部连接表达式,如 window-join、interval-join。但不支持左连接/全连接表达式。 window-cogroup 表达式肯定可以实现相同的语义,即使事件立即加入,也必须等待完全 window-size 的时间。我的问题是:
- 如何从设计的角度解释Flink Stream不支持left join/full join表达式?
- 如何通过Flink DataStream实现API(如果能立即转发joined-event就更好了)?
- 有没有办法扩展 Flink DataStream API 以支持左连接,例如:
.leftJoin()
.where()
.window()
.apply()
时间约束连接(如窗口连接或间隔连接)与常规连接之间的区别在于,在流上下文中,常规连接需要无限期的状态保留。
使用 Flink 的 Table 和 SQL API 可以使用常规 left/full 连接。 Flink 社区一直在努力的方向是不再进一步开发与 DataStream API 的关系操作,而是提高 DataStream 与 Table API 之间的互操作性。 Flink 1.13 标志着一个新的里程碑,它使流和表之间的转换变得更加容易,并且在 DataStreams 上需要关系操作时推荐使用这种方法。
Flink Stream 支持内部连接表达式,如 window-join、interval-join。但不支持左连接/全连接表达式。 window-cogroup 表达式肯定可以实现相同的语义,即使事件立即加入,也必须等待完全 window-size 的时间。我的问题是:
- 如何从设计的角度解释Flink Stream不支持left join/full join表达式?
- 如何通过Flink DataStream实现API(如果能立即转发joined-event就更好了)?
- 有没有办法扩展 Flink DataStream API 以支持左连接,例如:
.leftJoin()
.where()
.window()
.apply()
时间约束连接(如窗口连接或间隔连接)与常规连接之间的区别在于,在流上下文中,常规连接需要无限期的状态保留。
使用 Flink 的 Table 和 SQL API 可以使用常规 left/full 连接。 Flink 社区一直在努力的方向是不再进一步开发与 DataStream API 的关系操作,而是提高 DataStream 与 Table API 之间的互操作性。 Flink 1.13 标志着一个新的里程碑,它使流和表之间的转换变得更加容易,并且在 DataStreams 上需要关系操作时推荐使用这种方法。