文章目录
一、概述
1、SQL Join语义介绍
INNER JOIN - 内连接,返回满足条件的记录;
LEFT OUTER - 返回左表所有行,右表不存在补NULL;
RIGHT OUTER - 返回右表所有行,左边不存在补NULL;
FULL OUTER - 返回左表和右表的并集,不存在一边补NULL;
CROSS JOIN - 交叉连接,计算笛卡儿积,一般来说代价较大;
SELF JOIN - 自连接,将表查询时候命名不同的别名,进行逻辑变换后,重新连接;
INNER | OUTER | CROSS | SELF | ON | WHERE | |
---|---|---|---|---|---|---|
Apache Flink | Y | Y | N | Y | 必选 | 可选 |
- Apache Flink目前主要支持INNER JOIN和OUTER JOIN(LEFT/RIGHT/FULL OUTER)
- 在语义上面Apache Flink严格遵守标准SQL的语义
- SELF 可以转换为普通的INNER和OUTER。
2、FLink Join实现分类
在遵循标准SQL语义前提下,对于流计算不同的内部场景,Flink具有不同的实现方式,总结Flink Join有以下五种实现类型:
A、Regular Join(普通Join)
- 左、右侧新记录或回撤记录,都会去对侧,查找匹配的记录,并影响整个连接结果
- 如果在左侧有一个新记录,那么它将与右侧所有