一、创建一级分区
1.在hive中建表
create table if not exists d_user(
id int,
name String,
sex String)
PARTITIONED BY (country String) ##其中partitioned是一个关键词,表示以country来进行分区,且是静态分区,即倒数数据的使用才会进行创建相应的分区
ROW FORMAT DELIMITED ##表示对行进行格式化
FIELDS TERMINATED BY '\t'; ##表示以tab键来进行对数据的分割
2.将数据传入表中
load data local inpath '/1/user-china.txt' into table d_user partition(country='china');
##其中加上local则表示从本地导数据到hdfs上面,如果不加则是从hdfs上的一个path下截切到另一个path下
partition则是分在country为china的区下,导数据的时候进行创建
二、创建多级分区
创建多级分区和创建一级分区差别不大,需要改动的地方也就是partition这里多加入你要更加进行细分区的条件
1.建表
create table if not exists date_user(
id int,
name String,
sex String,
age int)
PARTITIONED BY (year String,mounth String)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
2.导数据到表中
load data local inpath '/1/user-2019-12-12' into table date_user partition (year='2019',mounth='12');
load data local inpath '/1/user-2019-11-11' into table date_user partition (year='2019',mounth='11');
load data local inpath '/1/user-2019-10-10' into table date_user partition (year='2019',mounth=10');
三、分区的意义
在hive中我们要按条件去查询数据的话,由于在大数据环境下数据量过于庞大,直接按条件查询的话效率会特别慢,所有我们把具有相同特征的数据进行分区管理,查询的时候范围便会缩小,进而提高查询的效率,后续也会有分桶的概念,即表中的数据进行切分,这样是为了减少因为笛卡尔积而产生的mapreduce的计算,进而提示效率。