大数据学习笔记-------------------(24)

2017/03/14 17:24
阅读数 60

第24章分区

 Hive组织table进入分区。该方法是把一个表分层相关的部分,每个部分基于分区列的值,如日期、城市、部门等。用分区,很容易查询一部分数据。

表(Table) 或分区(Partition)被细分成桶(buckets),为了提供额外的结构,该结构使数据可以用于更有效的查询。buckets工作是基于表的某列的哈希函数值。

例如,Tab1表包含employee数据例如id、name、dept、yoj(year ofjoining)。假设需要检索2012年加入所有的employee的详细信息。查询语句在整个表中搜索所需的信息。然而,如果按年份对员工数据进行划分,并将其存储在单独的文件中,它减少了查询处理时间。下面一个例子,显示如何分割文件及其数据:

 如下文件,包含employee数据表:

/tab1/employeedata/file1 
id,name, dept, yoj 
1, gopal, TP, 2012 
2, kiran, HR, 2012 
3, kaleel,SC, 2013 
4, Prasanth, SC, 2013

创建并插入数据到employee:

        

按年份把上面的数据分进两个文件内:

/tab1/employeedata/2012/file2 
1, gopal, TP, 2012 
2, kiran, HR, 2012
/tab1/employeedata/2013/file3 
3, kaleel,SC, 2013 
4, Prasanth, SC, 2013

24.1添加分区(Adding a Partition)

通过修改table来添加分区到table中。假设有表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表添加一个分区:

ALTER TABLE employee ADD PARTITION (year='2013') location '/2012/part2012';

24.2 重命名分区(Renaminga Partition) 

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

实例:

ALTER TABLE employee PARTITION (year='1203')  RENAME TO PARTITION (yoj='1203');

24.3 删除分区(Dropinga Partition)

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

实例:

ALTER TABLE employee DROP [IF EXISTS]  PARTITION (year='1203')

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部