黑猴子的家:Hive 分区表注意事项

1、创建二级分区表

hive (default)> create table dept_partition2(
               deptno int, dname string, loc string
               )
               partitioned by (month string, day string)
               row format delimited fields terminated by '\t';

2、正常的加载数据

(1)加载数据到二级分区表中

hive (default)> load data local inpath '/opt/module/datas/dept.txt' into table default.dept_partition2 partition(month='201801', day='13');

(2)查询分区数据

hive (default)> select * from dept_partition2 where month='201801' and day='13';

3、把数据直接上传到分区目录上,让分区表和数据产生关联的三种方式

(1)方式一:上传数据后修复

上传数据

hive (default)> dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=201801/day=12;
hive (default)> dfs -put /opt/module/datas/dept.txt /user/hive/warehouse/dept_partition2/month=201801/day=12;

查询数据(查询不到刚上传的数据)

hive (default)> select * from dept_partition2 where month='201801' and day='12';

执行修复命令

hive>msck repair table dept_partition2;

再次查询数据

hive (default)> select * from dept_partition2 where month='201801' and day='12';

(2)方式二:上传数据后添加分区

上传数据

hive (default)> dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=201801/day=11;
hive (default)> dfs -put /opt/module/datas/dept.txt  /user/hive/warehouse/dept_partition2/month=201801/day=11;

执行添加分区

hive (default)> alter table dept_partition2 add partition(month='201801', day='11');

查询数据

hive (default)> select * from dept_partition2 where month='201801' and day='11';

(3)方式三:上传数据后load数据到分区

创建目录

hive (default)> dfs -mkdir -p /user/hive/warehouse/dept_partition2/month=201801/day=10;

上传数据

hive (default)> load data local inpath '/opt/module/datas/dept.txt' into table dept_partition2 partition(month='201801',day='10');

查询数据

hive (default)> select * from dept_partition2 where month='201801' and day='10';

你可能感兴趣的:(黑猴子的家:Hive 分区表注意事项)