📅  最后修改于: 2020-11-30 04:25:32             🧑  作者: Mango
分区是表格数据的条件,用于创建单独的表或视图。 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,姓名,部门和年龄(即加入的年份)。假设您需要检索所有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, ...)
以下查询用于将分区添加到employee表。
./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’);"