Hive表DDL操作(一) 第4关:表分区

40 篇文章 5 订阅
17 篇文章 8 订阅

相关知识

为了完成本关任务,你需要掌握: 1.如何创建分区表; 2.如何添加分区; 3.如何重命名表分区; 4.如何交换表分区; 5.如何表分区信息持久化; 6.如何删除表分区。

创建分区表

使用shopping数据库创建一张商品信息分区表items_info2,按商品品牌p_brand和商品分类p_category进行分区:

 
  1. CREATE TABLE IF NOT EXISTS shopping.items_info2(
  2. name STRING COMMENT 'item name',
  3. price FLOAT COMMENT 'item price',
  4. category STRING COMMENT 'item category',
  5. brand STRING COMMENT 'item brand',
  6. type STRING COMMENT 'item type',
  7. stock INT COMMENT 'item stock',
  8. address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT> COMMENT 'item sales address')
  9. COMMENT 'goods information table'
  10. PARTITIONED BY (p_category STRING,p_brand STRING)
  11. ROW FORMAT DELIMITED
  12. FIELDS TERMINATED BY '\t'
  13. COLLECTION ITEMS TERMINATED BY ','
  14. TBLPROPERTIES ('creator'='Xiaoming','date'='2019-01-01');

添加分区

向表items_info2添加两个分区:

 
  1. ALTER TABLE items_info2 ADD PARTITION (p_category='clothes',p_brand='playboy') LOCATION '/hive/shopping/items_info2/playboy/clothes'
  2. PARTITION (p_category='shoes',p_brand='playboy') LOCATION '/hive/shopping/items_info2/playboy/shoes';

注意:PARTITIONED BY中的列p_categoryp_brand为伪列,不能与表中的实体列名相同,否则hive表创建操作报错(p_categoryp_brand分别对应表中的实体列categorybrand)。

重命名表分区

重命名表分区的语法为:

 
  1. ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;
  1. 重命名items_info2表的表分区playboy/clothesplayboy/T-shirt
 
  1. ALTER TABLE items_info2 PARTITION (p_category='clothes',p_brand='playboy') RENAME TO PARTITION (p_category='T-shirt',p_brand='playboy');

交换表分区

交换表分区的语法为:

 
  1. ALTER TABLE table_name_1 EXCHANGE PARTITION (partition_spec) WITH TABLE table_name_2;

该操作移动表table_name_1中特定分区下的数据到具有相同表模式且不存储在相应分区的table_name_2中。

表分区信息持久化

表分区信息持久化的语法为:

 
  1. MSCK REPAIR TABLE table_name;

该操作作用于同步表table_nameHDFS上的分区信息到Hive位于RDBMSmetastore中。

删除表分区

删除表分区的语法为:

 
  1. ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec,PARTITION partition_spec,…;

该操作会删除与特定分区相关的数据以及metadata

  1. 删除表items_info2playboy/shoes表分区:
 
  1. ALTER TABLE items_info2 DROP IF EXISTS PARTITION (p_category='shoes',p_brand='playboy');

编程要求

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

INFOTYPECOMMENT
SnoINTstudent sno
nameSTRINGstudent name
ageINTstudent age
sexSTRINGstudent sex
scoreSTRUCT <Chinese:FLOAT,Math:FLOAT,English:FLOAT>student score
  • 创建数据库test4
  • 在数据库tets4中,创建分区表student,表结构如上所示,和第二、三关相同,设置分区列为:stu_year类型STRINGsubject类型STRING
  • 添加两个分区:stu_year='2018',subject='Chinese'stu_year='2018',subject='Math'
  • 重命名表分区:将2018/Math分区重命名为2018/English
  • 删除表分区:将2018/Chinese分区删除

#********* Begin *********#
echo "
drop database if exists test4 cascade;

CREATE DATABASE IF NOT EXISTS test4  
LOCATION '/hive/test4'  
WITH DBPROPERTIES('creator'='John','date'='2022-04-20');  
 
CREATE TABLE IF NOT EXISTS test4.student(  
Sno INT COMMENT 'student sno',  
name STRING COMMENT 'student name',  
age INT COMMENT 'student age',  
sex STRING COMMENT 'student sex',  
score STRUCT <Chinese:FLOAT,Math:FLOAT,English:FLOAT> COMMENT 'student score')
PARTITIONED BY (stu_year STRING,subject STRING)  
ROW FORMAT DELIMITED  
FIELDS TERMINATED BY '\t'  
COLLECTION ITEMS TERMINATED BY ',' ;
 
ALTER TABLE student ADD PARTITION (stu_year='2018',subject='Chinese') LOCATION '/hive/test4/student/Chinese/2018'  
PARTITION (stu_year='2018',subject='Math') LOCATION '/hive/test4/student/Math/2018';
 
ALTER TABLE student PARTITION (stu_year='2018',subject='Math') RENAME TO PARTITION (stu_year='2018',subject='English'); 
 
ALTER TABLE student DROP IF EXISTS PARTITION (stu_year='2018',subject='Chinese');  


"
#********* End *********#

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HiveDDL操作是指对Hive进行定义、创建、修改和删除的操作。通过HiveDDL语句可以方便地管理和操作Hive,在数据仓库中进行数据的存储和查询分析。 首先,HiveDDL操作包括创建、删除、修改结构等。通过CREATE TABLE语句可以在Hive中创建新的,并指定的名称、列信息、分区信息以及其他属性。而DROP TABLE语句可以用来删除已存在的,释放存储空间。此外,Hive还支持ALTER TABLE语句,允许对进行修改,比如增加、删除、重命名列等操作。 其次,HiveDDL操作还包括对分区管理。通过ALTER TABLE语句,可以在中添加、删除、修改分区,以便更加灵活地组织和管理数据。 再次,DDL操作还包括对的存储格式和存储位置的定义。通过ALTER TABLE语句,可以修改的存储格式,比如将存储为文本文件或Parquet文件等。同时,也可以通过ALTER TABLE语句来指定的存储位置,可以将数据存储到HDFS中的指定目录,或者联其他外部存储系统。 最后,HiveDDL操作还支持对的权限管理。通过GRANT和REVOKE语句,可以授权和撤销用户对的访问、修改、删除等权限,保证数据的安全性和访问的控制。 综上所述,HiveDDL操作提供了一系列强大的功能,可以方便地对进行定义、创建、修改和删除。通过DDL操作,我们可以更好地管理和维护数据仓库中的,并灵活地进行数据查询和分析。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值