实验4Hive分区表和桶表

实验4Hive分区表和桶表

实验目的及要求

  1. 了解Hive的基本操作。

  2. 了解Hive的分区表与桶表的区别。

  3. 掌握表中数据的导入和导出的方法。

实验系统环境及版本

  1. Linux Ubuntu 20.04

  2. JDK1.8

  3. Hadoop3.1.0

  4. MySQL8.0.28

  5. Hive3.1.2

实验任务

  1. 表的创建、修改、删除。

  2. 表中数据的Hive表中数据的导入和导出。

  3. 表分区与桶表的创建、修改和删除。

实验内容及步骤

  1. Hive分区表的操作

  2. 创建分区表。在Hive中创建一个分区表student,包含id和name两个字段,数据类型分别为Int和String;分区列为month,数据类型为String,以“\t”为分隔符。

create table student(id int,name string)

partitioned by (month string)

row format delimited fields terminated by ‘\t’;

在这里插入图片描述

查看表student结构:

desc student;

在这里插入图片描述

向分区表导入数据。在Hive中创建一个非分区表student_1,用于存储本地/opt/datas目录下student.txt文件中的数据:

create table student_1(id int,name string,month string)

row format delimited fields terminated by ‘\t’;
在这里插入图片描述

将本地/opt/datas目录下,student.txt中的数据导入student_1表中:

load data local inpath ‘/opt/datas/student.txt’ into table student_1;
在这里插入图片描述

再将表student_1中的数据导入分区表student中:

insert into table student partition(month=‘202108’) select id,name from student_1 where month=‘202108’;

在这里插入图片描述

导入数据完成后,用select语句查看结果:

select * from student where month=‘202108’;

在这里插入图片描述

查看表student中的分区:

show partitions student;

在这里插入图片描述

修改分区表,将分区表student中的分区列month=202108改为month=202107,并查看修改后的 分区名:

alter table student partition(month=‘202108’) rename to partition(month=‘202107’);

show partitions student;

在这里插入图片描述

3.创建二级分区表

创建二级分区表student2:

create table student2(id int,name string)

partitioned by (month string,day string)

row format delimited fields terminated by ‘\t’;

在这里插入图片描述

使用load向二级分区表student2导入数据:

load data local inpath ‘/opt/datas/student.txt’ overwrite into table student2 partition(month=‘202107’,day=‘17’);

在这里插入图片描述

4.Hive桶表的操作

创建桶表。创建一个名为student_b的表,包含两个字段id和name,数据类型分别为Int和String,按month进行分区,按name字段分桶和id字段排序,分成4个桶。

create table student_b(id int,name string)

partitioned by (month string)

clustered by(name)

sorted by (id)

into 4 buckets;

在这里插入图片描述

设置桶表属性:

set hive.enforce.bucketing=true;

在这里插入图片描述

向student_b桶表中导入student_1表中的数据:

insert overwrite table student_b partition(month=‘202106’) select id,name from student_1;

在这里插入图片描述

浏览HDFS的桶表student_b中的数据文件:

hdfs dfs -ls /user/hive/warehouse/student_b/month=202106
在这里插入图片描述

查看桶表数据:

select * from student_b;

在这里插入图片描述

查看桶1数据:

hdfs dfs -cat /user/hive/warehouse/student_b/month=202106/000000_0;

在这里插入图片描述

查看桶2数据:

hdfs dfs -cat /user/hive/warehouse/student_b/month=202106/000001_0

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值