Hive分区表

x33g5p2x  于2021-03-14 发布在 Hive  
字(2.0k)|赞(0)|评价(0)|浏览(465)

[warning] 分区表:

  • 分区表是为了方便快速查询数据而设计的,它可以将数据按照省份、时间等对数据进行分类管理,比如一个省份是一个目录层级,省下的每个市是一个子目录层级,与该市相关的数据都存储在该目录下。也可以将该省或者市的数据继续按照年、月来进行细分管理。
  • 分区表可以结合内部表和外部表使用,因此分区表的操作也分为两种。

[success] 实验环境:完全分布式--bigdata1

[info] (1)创建按省份区分的测试数据

# 广东省数据   
cd /data/software
vi order_guangdong.txt

# 添加以下内容
1   TK-20200606098063	忠信友联安防	-35.00	 现结 	 广东省 	2020-06-06 09:40:36	  
2	TK-20200605191989	诚达电脑	-241.00	 月结 	 广东省 	2020-06-05 19:00:57	  
3	TK-20200605158473	智凡科技	-180.00	 现结 	 广东省 	2020-06-05 15:41:22	  
4	TK-20200605101022	李生	-257.00	 现结 	 广东省 	2020-06-05 10:32:26	  
5	TK-20200604185303	朱武达	-1140.00	 现结 	 广东省 	2020-06-04 18:38:17
# 湖南省数据
cd /data/software
vi order_hunan.txt

# 添加以下内容
6	TK-20200604172688	创智电脑	-627.00	 月结 	 湖南省 	2020-06-04 17:50:35	
7	TK-20200604152246	先安安防	-572.00	 现结 	 湖南省 	2020-06-04 15:22:56	
8	TK-20200604141635	和平朗盛	-2480.00	 月结 	 湖南省 	2020-06-04 14:59:11	
9	TK-20200604102417	长青藤	-365.00	 月结 	 湖南省 	2020-06-04 10:20:01	
10	TK-20200604092869	河源客户	-310	 现结 	 湖南省 	2020-06-04 09:28:38
# 四川省数据
cd /data/software
vi order_sichuan.txt

# 添加以下内容
11	TK-20200603182813	灯塔易展电脑	0.00	 现结 	 四川省 	2020-06-03 18:51:40	
12	TK-20200603162972	民族中学	-3625	 月结 	 四川省 	2020-06-03 16:39:17	
13	TK-20200603148551	兴旺	-716.00	 现结 	 四川省 	2020-06-03 14:07:09	
14	TK-20200603104403	同行曾林涛	-195.00	 月结 	 四川省 	2020-06-03 10:36:23	
15	TK-20200603105333	同行曾林涛	-130	 月结 	 四川省 	2020-06-03 10:35:30

[info] (2)创建内部分区表

create table order_table (
num string, 
code string, 
name string,
fee string, 
type string,
city string,
time string
)    
PARTITIONED BY (cityName string)      
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
创建分区表需要指定 PARTITIONED BY ,通俗地说就是分区字段,需要注意的是分区字段名称不能是表的字段名称。
例如上面的建表语句中,是想对省份进行分区,但是数据本身包含了这个字段:city,因此重新取了一个分区字段
名称:cityName来代表省份。

:-:

[info] (3)分区表加载数据

# 加载广东省数据
load data local inpath '/data/software/order_guangdong.txt' into table order_table partition(cityName="guangdong");

# 加载湖南省数据
load data local inpath '/data/software/order_hunan.txt' into table order_table partition(cityName="hunan");

# 加载四川省数据
load data local inpath '/data/software/order_sichuan.txt' into table order_table partition(cityName="sichuan");

:-:

[info] (4)HDFS验证分区层级关系

[info] (5)查询分区表数据

# 虽然分区字段在HDFS上是一个层级目录,但是其实它还是表的字段,我们可以使用分区字段直接作为查询条件
select * from order_table where cityName="guangdong";

:-:

相关文章

微信公众号

最新文章

更多