分区是表格数据的条件,用于创建单独的表或视图. SHOW PARTITIONS列出给定基表的所有现有分区.分区按字母顺序列出.在Hive 0.6之后,还可以指定分区规范的一部分来过滤结果列表.
您可以使用SHOW PARTITIONS命令查看特定表中存在的分区.本章介绍如何在HCatalog中列出特定表的分区.
语法如下 :
SHOW PARTITIONS table_name;
以下查询删除名为 employee :
./hcat –e "Show partitions employee;"
成功执行查询后,您会看到以下响应 :
OK Designation = IT Time taken: 5.3 seconds
HCatalog将表组织到分区中.它是一种根据分区列(如日期,城市和部门)的值将表划分为相关部分的方法.使用分区,可以轻松查询部分数据.
例如,名为 Tab1 的表包含员工数据,例如id,name,dept,和yoj(即加入年份).假设您需要检索2012年加入的所有员工的详细信息.查询将在整个表中搜索所需信息.但是,如果使用年份对员工数据进行分区并将其存储在单独的文件中,则会缩短查询处理时间.以下示例显示如何对文件及其数据进行分区 :
以下文件包含 employeedata 表.
id, name, dept, yoj 1, gopal, TP, 2012 2, kiran, HR, 2012 3, kaleel, SC, 2013 4, Prasanth, SC, 2013
以上数据是使用年份分成两个文件.
1, gopal, TP, 2012 2, kiran, HR, 2012
3, kaleel, SC, 2013 4, Prasanth, SC, 2013
我们可以通过更改表来为表添加分区.假设我们有一个名为 employee 的表,其中包含Id,Name,Salary,Designation,Dept和yoj等字段.
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...; partition_spec: : (p_column = p_col_value, p_column = p_col_value, ...)
以下查询用于添加分区到员工表.
./hcat –e "ALTER TABLE employee ADD PARTITION (year = '2013') location '/2012/part2012';"
您可以使用RENAME-TO命令重命名分区.其语法如下 :
./hact –e "ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;"
以下查询用于重命名分区 :
./hcat –e "ALTER TABLE employee PARTITION (year=’1203’) RENAME TO PARTITION (Yoj='1203');"
用于删除分区的命令的语法如下 :
./hcat –e "ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec,. PARTITION partition_spec,...;"
以下查询用于删除分区 :
./hcat –e "ALTER TABLE employee DROP [IF EXISTS] PARTITION (year=’1203’);"