笛卡尔积

  1. 笛卡尔集基本原理
    两个表如果笛卡尔集运算
    (1)行数是两个表行数相乘的结果
    (2)列是两个表合集

当Hive设定为严格模式(hive.mapred.mode=strict)时,不允许在HQL语句中出现笛卡尔积,这实际说明了Hive对笛卡尔积支持较弱。因为找不到Join key,Hive只能使用1个reducer来完成笛卡尔积。

一般还是采用等值连接的方式。

1
2
3
4
5
6
7
8
9
select T1., T2. from

(select * from table1) T1

join

(select * from table2) T2

on 1=1;

其中on 1=1是可选的,注意在Hive的Strict模式下不能用这种语法,需要先用set hive.mapred.mode=nonstrict;设为非strict模式就可以用了。

参考:
https://blog.csdn.net/tototuzuoquan/article/details/39947045