Hive中join, outer join, semi join区别
来源:互联网 发布:淘宝宝贝详情页文字 编辑:程序博客网 时间:2024/04/30 08:01
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
最常用的就是多表关联查询,主要讲解下join、outer join和semi join的具体使用。
join是最简单的关联操作,两边关联只取交集。
outer join分为left outer join、right outer join和full outer join。
left outer join是以左表驱动,右表不存在的key均赋值为null;
right outer join是以右表驱动,左表不存在的key均赋值为null;
full outer join全表关联,将两表完整的进行笛卡尔积操作,左右表均可赋值为null。
semi join最主要的使用场景就是解决exist in。
Hive不支持where子句中的子查询,SQL常用的exist in子句在Hive中是不支持的。
SELECT a.key, a.value
FROM a
WHERE a.key in (SELECT b.key FROM B);
可以改写为:
SELECT a.key, a.value
FROM a LEFT OUTER JOIN b ON (a.key = b.key)
WHERE b.key <> NULL;
一个更高效的实现为:
SELECT a.key, a.value
FROM a LEFT SEMI JOIN b on (a.key = b.key);
left semi join是0.5.0以上版本的特性。
0 0
- Hive中join, outer join, semi join区别
- Hive中join, outer join, semi join区别
- HIVE中join、semi join、outer join举例详解
- HIVE中join、semi join、outer join举例详解
- HIVE中join、semi join、outer join举例详解
- HIVE中join、semi join、outer join举例详解
- HIVE中join、semi join、outer join举例详解
- HIVE中join、semi join、outer join举例详解
- HIVE中join、semi join、outer join举例详解
- HIVE实例说明join ,semi join, outer join,anti join的区别
- Hive的left join、left outer join和left semi join三者的区别
- Hive的left join、left outer join和left semi join三者的区别
- 简单介绍join,outer-join,semi-join,anti-join的区别
- 简单介绍join,outer-join,semi-join,anti-join的区别
- 简单介绍join,outer-join,semi-join,anti-join的区别
- 简单介绍join,outer-join,semi-join,anti-join的区别
- hive left semi join
- hive left semi join
- 成功人士的7个习惯
- 种子会长成什么,希望经历多久会失望
- Python 写入CSV文件
- Java用广度优先搜索快速搜索文件
- JSP自定义标签
- Hive中join, outer join, semi join区别
- 分数数列算法实现java
- 2-HTML中的p,h,hr,br标签以及注释
- Uva-1204 Fun Game(状压DP)
- python学习-函数、作用域
- C#多线程(二) -- ThreadStart
- Java中信息提示框的四种类型
- Linux(Debian)中的Samba服务器的配置
- lowlevel_init.S(u-boot.2012.10 源代码)