hive分区partition(动态和静态分区混合使用; partition的简介)

本文介绍了Hive的分区概念,包括动态和静态分区的使用。详细讲解了创建、添加、删除分区的语法,并提供了加载数据到分区表的示例,以及如何进行基于分区的查询操作。
摘要由CSDN通过智能技术生成
分区是hive存放数据的一种方式。将列值作为目录来存放数据,就是一个分区。这样where中给出列值时,只需根据列值直接扫描对应目录下的数据,不扫面其他不关心的分区,快速定位,查询节省大量时间。分动态和静态分区两种

动态分区

1)不显示的给出分区名,根据列的取值自动建立对应分区(多少种取值,多少种分区),所以需要限制最大分区数:
    SET hive.exec.dynamic.partition=true;
    SET hive.exec.max.dynamic.partitions.pernode=1000;
    SET hive.exec.max.dynamic.partitions=3000; 
2)分区全部使用动态分区,还要设置为nonstrict模式,否则无法执行
    set hive.exec.dynamic.partition.mode=nonstrict;

3)动态分区按位置来对应,跟名称无关。所以查询select中必须在最后字段按动态分区顺序给出对应字段
    insert overwrite table tb_pmp_raw_log_analysis_count partition (day='2016-05-17', media,type)
        select advertiser_id,ad_plan_id,crt_id,hour,ad_place_id,city_bidrequest,device,network,os,category,channel,ad_type,rtb_type,price,count(1) as cnt,media, 1 as type
        from (
          select 
            split(all,'\\\\|~\\\\|')[41] as advertiser_id,
            split(all,'\\\\|~\\\\|')[10] as ad_plan_id,
            split(all,'\\\\|~\\\\|')[11] as crt_id,
            substr(split(all,'\\\\|~\\\\|')[0],12,2) as hour,
            ca
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值