Hive的分区表入门

什么是分区表:

数据分区的概念以及存在很久了,通常使用分区来水平分散压力,将数据从物理上移到和使用最频繁的用户更近的地方,以及实现其目的。
hive中有分区表的概念,我们可以看到分区具重要性能优势,而且分区表还可以将数据以一种符合逻辑的方式进行组织,比如分层存储

分区表分别有静态分区和动态分区

  • 在大数据中,最常用的一种思想就是分治,我们可以把大的文件切割划分成一个个的小的文件,这样每次操作一个小的文件就会很容易了,同样的道理,在hive当中也是支持这种思想的,就是我们可以把大的数据,按照每天,或者每小时进行切分成一个个的小的文件,这样去操作小的文件就会容易得多了

入门案例(文件自己创,路径自己设,注意分割符)

  • 创建分区表语法
create table score(s_id string,c_id string, s_score int) partitioned by (month string) row format delimited fields terminated by '\t';
  • 创建一个表带多个分区
create table score2 (s_id string,c_id string, s_score int) partitioned by (year string,month string,day string) row format delimited fields terminated by '\t';
  • 加载数据到分区表中
load data local inpath '/export/servers/hivedatas/score.csv' into table score partition (month='201806');
  • 加载数据到一个多分区的表中去
load data local inpath '/export/servers/hivedatas/score.csv' into table score2 partition(year='2018',month='06',day='01');
  • 多分区联合查询使用union all来实现
select * from score where month = '201806' union all select * from score where month = '201806';
  • 查看分区
show  partitions  score;
  • 添加一个分区
alter table score add partition(month='201805');
  • 同时添加多个分区
alter table score add partition(month='201804') partition(month = '201803');

注意:添加分区之后就可以在hdfs文件系统当中看到表下面多了一个文件夹

  • 删除分区
alter table score drop partition(month = '201806');

分区表的好处,对字段的要求

  • 根据指定字段进行分区,查询时不需要扫描无关的数据,提高了查询的效率
  • 分区字段绝对不能出现在表结构的字段中

你可能感兴趣的:(Hive,大数据,hive,分区表)