hive分桶,排序,连接

本文详细介绍了Hive中的连接操作,包括等值连接、左连接、右连接和多表连接,并展示了如何避免笛卡尔积。此外,还讨论了Hive的排序功能,如全局排序和分区排序。最后,解释了Hive分桶的概念,创建分桶表的步骤,以及分桶在数据管理和抽样测试中的应用。

连接

1)等值连接
根据员工表和部门表中部门编号相等,查询员工编号、员工名、部门名称
select e.empno,e.ename,d.dept from empt e join dept d on e.deptno=d.deptn
o;
2)左连接(左边的数据比右边大,对应找不到的数据就为Null)
select e.empno,e.ename,d.dept from empt e left join dept d on e.deptno=d.
deptno;
3)右连接(右边的数据比左边大,对应找不到的数据就为Null)
select e.empno,e.ename,d.dept from dept d right join empt e on e.deptno=
d.deptno;
4)多表连接查询
查询员工名字、部门名称、员工地址
select e.ename,d.dept,l.loc_name from empt e join dept d on e.deptno=d.de
ptno join location l on d.loc = l.loc_no;
(5)笛卡尔积
为了避免笛卡尔积采用设置为严格模式
set hive.mapred.mode;
set hive.mapred.mode=strict;
设置属性hive.mapred.mode 为strict能够阻止以下三种类型的查询:
1、 除非在where语段中包含了分区过滤,否则不能查询分区了的表。这是因为分区表通常保存的数据量都比较大,没有限定分区查询会扫描所有分区,耗费很多资源。
Table: logs(…) partitioned by (day int);
不允许:select *from logs;
允许:select *from logs where day=20151212;
2、 包含order by,但有limit子句的查询。因为orderby 会将所有的结果发送给单个reducer来执行排序,这样的排序很耗时。
3、 笛卡尔乘积;<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值