本文共 1713 字,大约阅读时间需要 5 分钟。
hive> SELECT * FROM test; id_name9 Nermaer31 JiaJia10 Messi16 Santi6 Tian21 Pirlohive> SELECT * FROM test_name; 26 Santi26 Tian99 xiaozha99
SELECE a.,b.
FROM a JOIN b ON(a.xx=b.xx) hive只支持等值连接,这意味着连接的谓语条件只能使用等号。hive> SELECT test.* ,test_name.* > FROM test JOIN test_name ON(test.name=test_name.name);16 Santi 26 Santi6 Tian 26 Tian
用EXPLAIN来查看hive为整个查询使用了多少个mapreduce
EXPLAIN EXTENDED 能够查看更多的详细信息。 [注意] Hive会智能的选取最少的mapreduce执行操作。 HIve只允许在FROM子句中出现一张表,要进行连接操作,必须执行JOIN操作. 也不支持mysql在from语句中写出表,在where语句中指出条件。 如下:不支持一下语句。select test.*,test_name.*from test,test_namewhere test.id=test_name.xx;
内连接只显示了俩张表都存在的数据,而外连接则是显示出所有的数据
其中左连接是左外边的表输出完整数据。右外连接是右边的表输出完整数据,全外连接就是两张表的所有行全部输出。 (1)左外连接 LEAF OUTER JOINhive> SELECT test.*,test_name.*> FROM test LEFT OUTER JOIN test_name ON(test.name=test_name.name);9 Nermaer NULL NULL31 JiaJia NULL NULL10 Messi NULL NULL16 Santi 26 Santi6 Tian 26 Tian21 Pirlo NULL NULL
(2)右外连接
hive> SELECT test.*,test_name.* > FROM test RIGHT OUTER JOIN test_name ON(test.name=test_name.name);16 Santi 26 Santi6 Tian 26 TianNULL NULL 99 xiaozha99
(3)全外连接
hive> SELECT test.*,test_name.* > FROM test FULL OUTER JOIN test_name ON(test.name=test_name.name);31 JiaJia NULL NULL10 Messi NULL NULL 9 Nermaer NULL NULL21 Pirlo NULL NULL16 Santi 26 Santi6 Tian 26 TianNULL NULL 99 xiaozha99
*SELECT FROM a
WHERE a.xxx IN (SELECT xxx FROM b )** 可以查A表中的某列在B表中出现的值,其实和内连接的效果一样,只不过使用IN查询。hive> SELECT * FROM test> WHERE test.name IN (SELECT name FROM test_name);16 Santi6 Tian
转载地址:http://joiqi.baihongyu.com/