Hive 连接查询操作(不支持IN查询)

来源:互联网 发布:西方哲学书籍推荐知乎 编辑:程序博客网 时间:2024/06/06 09:10
CREATE EXTERNAL TABLE IF NOT EXISTS a( telno STRING, other STRING )PARTITIONED BY(day String) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'; CREATE EXTERNAL TABLE IF NOT EXISTS b( telno STRING, other STRING )PARTITIONED BY(day String) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'; 


测试表a中数据如下:
hive> select * from a;
OK
130a01
131b01
132c01
133d01
134e01
135f01
Time taken: 0.215 seconds

测试表b中数据如下:
hive> select * from b;
OK
130a01
131b01
132c01
13302
13402
13502
Time taken: 0.281 seconds

测试表b中分区数据如下:
hive> select * from b where day='01';
OK
130a01
131b01
132c01
Time taken: 0.359 seconds

测试表b中分区数据如下:
hive> select * from b where day='02';
OK
13302
13402
13502
Time taken: 0.187 seconds

测试语句如下:
1.左连接不指定条件
hive> select a.telno,b.other,a.day,b.day from a left outer join b on(a.telno=b.telno) ;
OK
130a0101
131b0101
132c0101
1330102
1340102
1350102
Time taken: 8.935 seconds

2.左连接指定连接条件(on中)
hive> select a.telno,b.telno,b.other,a.day,b.day from a left outer join b on(a.telno=b.telno and b.day='02');
OK
130NULLNULL01NULL
131NULLNULL01NULL
132NULLNULL01NULL
1331330102
1341340102
1351350102
Time taken: 12.624 seconds

3.左连接指定连接条件(on外)
hive> select a.telno,b.telno,b.other,a.day,b.day from a left outer join b on(a.telno=b.telno ) where b.day='02';
OK
1331330102
1341340102
1351350102
Time taken: 8.88 seconds


0 0