更新时间:2024-11-29 GMT+08:00
Flink作业大小表Join
使用场景
Flink作业双流Join时存在大小表数据,通过内核broadcast策略确保小表数据发送到Join的task中,通过rebalance策略将大表数据打散到Join中,提高Flink SQL易用性,增强作业稳定性。
使用方法
在使用Flink SQL时,该特性通过hints方法指定Join的左表或右表为广播表,另一张表为rebalance表,SQL语句实例如下,分别以A\C作为小表实例:
- 以A表作为广播表
- 使用Join方式
SELECT /*+ BROADCAST(A) */ a2, b2 FROM A JOIN B ON a1 = b1
- 使用Where方式
SELECT /*+ BROADCAST(A) */ a2, b2 FROM A, B WHERE a1 = b1
- 使用Join方式
- 以A和C表作为广播表
SELECT /*+ BROADCAST(A, C) */ a2, b2, c2 FROM A JOIN B ON a1 = b1 JOIN C ON a1 = c1
- 支持通过“/*+ BROADCAST(smallTable1, smallTable2) */”方式使用该特性,兼容开源双流Join逻辑。
- 不支持开源双流Join和该特性的切换,因为该特性会将数据广播到每个Join算子。
- 不支持LEFT JOIN时小表为左表,RIGHT JOIN时小表为右表。
父主题: FlinkSQL特性增强