hive的分区表概念以及修改操作

一、 静态分区

  1. 单个分区

     a. 创建分区表 :  `create table par_tab(name string,nation string) partitioned by(gender string) row format delimited fields terminated by ',';`
    

    在这里插入图片描述

     b. 加载数据:`load data local inpath '/home/hduser/software/hive_1.2.1/hive_data/test1.txt' into table par_tab partition(gender='boy');`
    

    在这里插入图片描述

     c. 查询数据:`select * from par_tab;`
    

    在这里插入图片描述

     d. 按分区查 : `select * from par_tab where gender='boy';`
    

    在这里插入图片描述

     e. 联合查询操作:`select * from par_tab where gender='boy' union select * from par_tab where gender='girl';`  *用了mapReduce,结果也是自动排序了*
    

    在这里插入图片描述

    1. 多个分区

       a. 创建多分区的表:`create table 表名(name string,nation string) partitioned by(gender string,year string)row format delimited fields terminated by ',';`
      

      在这里插入图片描述

       b. 查看分区表信息: `desc par_mul_tab;`
      

      在这里插入图片描述

       c. 加载数据:`load data local inpath '/home/hduser/software/hive_1.2.1/hive_data/test1.txt' into table par_mul_tab partition(gender='girl',year='2018');`
      

      在这里插入图片描述

      hdfs上存储数据的位置在这里插入图片描述

       d. 查询数据: 
      
select * from par_mul_tab where gender='girl' and year='2018';
		

在这里插入图片描述

二、 动态分区

  1. 单分区

     a. 创建普通表作为临时表:`create table par_dyn_tab as select * from par_tab;`(克隆一个静态分区表,不会把分区的信息克隆,只是单纯的把字段克隆)然后把数据删掉:`truncate table xxx`
    

    在这里插入图片描述

    克隆前后的表信息对照:
    在这里插入图片描述

     b. 给临时表加载数据:`load data local inpath '/home/hduser/software/hive_1.2.1/hive_data/test1.txt' into table par_dyn_tab;`
    

    在这里插入图片描述在这里插入图片描述

     c. 为分区表动态加载数据:`insert overwrite table par_tab partition(gender) select name,nation,gender from par_dyn_tab;`   //动态分区往静态分区表中加载数据,分区的字段是查询的最后的字段
    

    在这里插入图片描述

    此时的错误信息提示可以更改:set hive.exec.dynamic.partition.mode=nonstrict;
    在这里插入图片描述

    1. 多分区

       a. 创建临时表: `create table par_mul_dyn (name string,nation string,gender string,year string) row format delimited fields terminated by ',';`
      

      在这里插入图片描述

       b. 加载数据:`load data local inpath'/home/hduser/software/hive_1.2.1/hive_data/test3' into table par_mul_dyn;`
      

      在这里插入图片描述

      c. 像分区表中加载数据:insert overwrite table par_mul_tab partition(gender='woman',year) select name,nation,year from par_mul_dyn; //分区的字段顺序:静态分区必须放在动态分区前面,都是动态分区无要求在这里插入图片描述
      三、 分区的修改

    • 创建分区表:create table dept_partition(dept_id int,dept_name string) partitioned by(year int)row format delimited fields terminated by '\t';
      在这里插入图片描述
    1. 加载数据:load data local inpath'/home/hduser/software/hive_1.2.1/hive_data/dept.txt' into table dept_partition partition(year='2020');
      在这里插入图片描述

    2. 动态添加分区: alter table dept_partition add partition(year='2019');

    在这里插入图片描述

    添加多个分区:
    中间以空格分割,新添加的分区不能存在

    在这里插入图片描述

    1. 删除分区:alter table dept_partition drop partition(year='2018');
      在这里插入图片描述

    删除多个分区:alter table dept_partition drop partition(year='2018'),partition(year='2021'); 中间以逗号分割,删除不存在的分区不会报错
    在这里插入图片描述

    1. 查看分区表结构:desc formatted dept_partition;
      在这里插入图片描述

    2. 查看分区表有多少个分区:show partitions dept_partition;
      在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值