当前位置:   article > 正文

内部分区表——头歌_hive内部分区表头歌

hive内部分区表头歌

任务描述

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

相关知识

为了完成本关任务,你需要掌握: 1.内部分区表的创建 2.增加与删除分区 2.相关表的操作

分区表概述

分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive 中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。这样就能使查询效率提升许多,并且便于对数据进行管理。

创建内部分区表

通过PARTITIONED BY子句指定,分区的顺序决定了谁是父目录,谁是子目录。

注意:分区字段不能是表中已经存在的数据,可以将分区字段看作表的伪列。

  • 单分区创建
 
  1. CREATE TABLE IF NOT EXISTS part_test1(
  2. id int,
  3. name string
  4. )
  5. PARTITIONED BY (year string) ## 分区
  6. ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' ## 列分隔符
  7. STORED AS TEXTFILE; ## 存储类型
  • 多分区创建
 
  1. CREATE TABLE IF NOT EXISTS part_test2(
  2. id int,
  3. name string
  4. )
  5. PARTITIONED BY (month string,day string) ## 分区
  6. ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' ## 列分隔符
  7. STORED AS TEXTFILE; ## 存储类型

加载数据到分区表中

通过load加载将本地的/root/test.txt文本数据加载到part_test1表中,并且指定partition分区字段year2022

  • load 加载
 
  1. load data local inpath '/root/test.txt' into table part_test1 partition(year='2022');

增加分区

通过add partition的方式添加新的分区。

  • 创建单个分区
     
      
    1. alter table part_test2 add partition(month='202203',day='20220301');
  • 同时创建多个分区
     
      
    1. alter table part_test1 add partition(year='2021') partition(year='2022');

删除分区

通过drop partition的方式删除分区。

  • 创建单个分区
     
      
    1. alter table part_test2 drop partition(month='202203',day='20220301');
  • 同时创建多个分区
     
      
    1. alter table part_test1 drop partition(year='2021') partition(year='2022');

查看分区表分区

通过show partitions查看part_test1表的分区情况

 
  1. show partitions part_test1;

编程要求

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

  • 创建内部分区表:student;设置分区字段为month,类型为string

  • 加载表数据时指定分区为2022-03

  • 同时创建student表的两个新分区:2022-042022-05

  • 删除分区:2022-04

  • 查看student表的分区情况

  • 查询student表数据

student表结构:

INFOTYPE
idint
namestring
ageint
sexstring

部分数据如下:

 
  1. 202201,Anne,18,female
  2. 202202,Tom,20,male
  3. 202203,Jack,19,male

数据切分方式:逗号(,

数据所在目录:/root/student.txt

测试说明

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

预期输出:

 
  1. month=2022-03
  2. month=2022-05
  3. 202201 Anne 18 female 2022-03
  4. 202202 Tom 20 male 2022-03
  5. 202203 Jack 19 male 2022-03
  6. 202204 xiaoming 20 male 2022-03
  7. 202205 anni 19 female 2022-03

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

代码如下:

  1. ---创建mydb数据库
  2. create database if not exists mydb;
  3. ---使用mydb数据库
  4. use mydb;
  5. ---------- Begin ----------
  6. ---创建student内部分区表
  7. CREATE TABLE IF NOT EXISTS student(
  8. id int,
  9. name string,
  10. age int,
  11. sex string
  12. )
  13. PARTITIONED BY (month string)
  14. ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
  15. STORED AS TEXTFILE;
  16. ---导入数据:/root/student.txt
  17. load data local inpath '/root/student.txt' into table student partition(month='2022-03');
  18. ---同时创建student表的两个新分区
  19. alter table student add partition(month='2022-04') partition(month='2022-05');
  20. ---删除student表的分区
  21. alter table student drop partition(month='2022-04');
  22. ---查看student表分区情况
  23. show partitions student;
  24. ---查询student表数据
  25. select * from student;
  26. ---------- End ----------
  27. ---清空student表
  28. truncate table student;
  29. ---删除student表
  30. drop table student;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/693663
推荐阅读
相关标签
  

闽ICP备14008679号