最近被朋友问到有关于Hive Join的问题,保守回答过后,来补充补充知识;
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
一、Hive支持哪些连接
二、Hive五种连接
- INNER JOIN:返回两张表中关联条件为"真"的记录;
- LEFT JOIN(LEFT OUTER JOIN):返回左表中所有的记录,加上右表中匹配的记录,如果条件不匹配,则返回NULL;
- RIGHT JOIN(RIGHT OUTER JOIN):返回右表中的所有记录,加上左表中匹配的记录,如果条件不匹配,则返回NULL;
- FULL JOIN(FULL OUTER JOIN):返回与左或右表记录匹配的所有记录;
- LEFT SEMI JOIN:仅返回左侧表中的记录。Hive中不支持IN子查询,但可用它代替;
三、演示操作
员工信息表”dept”;
显示员工姓名,员工编号,部门;
select e.ename,e.empno,d.dname
from emp e inner join dept d on e.deptno = d.deptno;统计每个部门的员工数量;
select d.deptno,count(e.deptno) num
from emp e right join dept d on e.deptno = d.deptno
group by d.deptno;