由于hive在查询时会做全表扫描,有些情况下我们只需要查询部分数据,为了避免全表扫描消耗资源和性能,我们可以实现表分区使之扫描部分表。
在hive中分区字段是一个伪字段,并不实际存储数据,但可以作为条件用于查询。表分区就是会在表目录下面针对不同的分区创建一个子目录,如果有二级分区,那么会在一级子目录下面继续创建子目录。
hive中的分区字段是表外字段,mysql中的分区字段是表内字段。
分区应用:
- 进入目标库中
hive> use test_data;
一级分区应用:
- 建表
hive> create table if not exists partition1(
> id int,
> name string,
> age int
> )
> partitioned by (testdate string)
> row format delimited
> fields terminated by '\t'
> lines terminated by '\n'; #默认就是以\n作为换行符的,所以可以省略不写
- 创建数据文件
[root@hadoop01 test_data]# pwd
/usr/local/wyh/test_data
[root@hadoop01 test_data]# cat user_partition1.txt
1 user1 1
2 user2 2
3 u