用wordpress开发网站模板,黑龙江建设局网站,网站设计中 查询怎么做,单页面网站推广1. 等值join
Hive支持通常的sql join语句#xff0c;但是只支持等值连接#xff0c;不支持非等值连接。但sql是支持非等值连接的。
1#xff09;案例实操
#xff08;1#xff09;根据员工表和部门表中的部门编号相等#xff0c;查询员工编号、员工名称和部门名称。
…1. 等值join
Hive支持通常的sql join语句但是只支持等值连接不支持非等值连接。但sql是支持非等值连接的。
1案例实操
1根据员工表和部门表中的部门编号相等查询员工编号、员工名称和部门名称。
hive (default)
select e.empno, e.ename, d.dname
from emp e
join dept d
on e.deptno d.deptno;
2. 内连接
内连接只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来。
hive (default)
select e.empno, e.ename, d.deptno
from emp e
join dept d
on e.deptno d.deptno;
3. 左外连接
左外连接join操作符左边表中符合where子句的所有记录将会被返回。
hive (default)
select e.empno, e.ename, d.deptno
from emp e
left join dept d
on e.deptno d.deptno;
4. 右外连接
右外连接join操作符右边表中符合where子句的所有记录将会被返回。
hive (default)
select e.empno, e.ename, d.deptno
from emp e
right join dept d
on e.deptno d.deptno;
5. 满外连接
满外连接将会返回所有表中符合where语句条件的所有记录。如果任一表的指定字段没有符合条件的值的话那么就使用null值替代。
hive (default)
select e.empno, e.ename, d.deptno
from emp e
full join dept d
on e.deptno d.deptno;
6. 多表连接
注意连接n个表至少需要n-1个连接条件。例如连接三个表至少需要两个连接条件。
数据准备在/opt/module/hive/datas/下vim location.txt
部门位置id 部门位置
[atguiguhadoop102 datas]$ vim location.txt1700 北京
1800 上海
1900 深圳
1创建位置表
hive (default)
create table if not exists location(loc int, -- 部门位置idloc_name string -- 部门位置
)
row format delimited fields terminated by \t;
2导入数据
hive (default) load data local inpath /opt/module/hive/datas/location.txt into table location;
3多表连接查询
hive (default)
select e.ename, d.dname, l.loc_name
from emp e
join dept d
on d.deptno e.deptno
join location l
on d.loc l.loc;
大多数情况下Hive会对每对join连接对象启动一个MapReduce任务。本例中会首先启动一个MapReduce job对表e和表d进行连接操作然后会再启动一个MapReduce job将第一个MapReduce job的输出和表l进行连接操作。
7. 笛卡尔积
1笛卡尔集会在下面条件下产生
1省略连接条件
2连接条件无效
3所有表中的所有行互相连接
2案例实操
hive (default)
select empno, dname
from emp, dept;
8. 联合union / union all
1unionunion all上下拼接
union和union all都是上下拼接sql的结果这点是和join有区别的join是左右关联union和union all是上下拼接。union去重union all不去重。
union和union all在上下拼接sql结果时有两个要求
1两个sql的结果列的个数必须相同
2两个sql的结果上下所对应列的类型必须一致
2案例实操
hive (default)
select *
from emp
where deptno30
union
select *
from emp
where deptno40;