头歌 分桶表

任务描述
        本关任务:根据相关知识内容实现 Hive 分桶表的操作。

相关知识
        为了完成本关任务,你需要掌握: 1.分桶表的创建 2.分桶表的数据加载 3.抽样查询 4.相关表的操作

分桶表概述

        分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区。对于一张表或者分区,Hive 可以进一步组织成桶,也就是更为细粒度的数据范围划分。

        分桶是将数据集分解成更容易管理的若干部分的另一个技术。 分区针对的是数据的存储路径;分桶针对的是数据文件。

创建分桶表

        通过 clustered by(字段名) into bucket_num buckets 分桶,意思是根据字段名分成bucket_num个桶。

编程要求
        请根据右侧命令行内的提示,在Begin - End区域内进行sql语句代码补充,具体任务如下:

        创建分桶表dept_buck:根据deptno分成4个桶

        创建中间表temp_dept_buck:与dept_buck表结构一致

        load加载数据到temp_dept_buck中间表

        insert插入数据至dept_buck分桶表

        抽样查询dept_buck表数据:从第1个桶中开始抽取,相隔4个桶再次抽取,抽样的列为deptno

测试说明

        平台会对你编写的代码进行测试:

预期输出:

 
  1. 16 staff16
  2. 12 staff12
  3. 8 staff8
  4. 4 staff4

        开始你的任务吧,祝你成功!

创作不易,如果能解决您的问题,麻烦您点赞、收藏+关注,一键三连!!!

代码如下 

---创建mydb数据库
create database if not exists mydb;
---使用mydb数据库
use mydb;
---------- Begin ----------
---创建分桶表dept_buck:根据deptno分成4个桶
CREATE TABLE if not exists dept_buck(deptno int, dname string)
clustered by(deptno) into 4 buckets 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
----创建中间表temp_dept_buck:与dept_buck表结构一致
CREATE TABLE if not exists temp_dept_buck(deptno int, dname string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
---通过load加载数据到temp_dept_buck中间表
load data local inpath '/root/dept.txt' into table temp_dept_buck;  
---通过insert插入数据至dept_buck分桶表
insert into table dept_buck select * from temp_dept_buck;  
---抽样查询`dept_buck`表数据:从第`1`个桶中开始抽取,相隔`4`个桶再次抽取,抽样的列为`deptno`
select * from dept_buck TABLESAMPLE(BUCKET 1 OUT OF 4 ON deptno);  
---------- End ----------
---清空表
truncate table dept_buck;
truncate table temp_dept_buck;
---删除dept_buck表
drop table dept_buck;
drop table temp_dept_buck;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值