Hive 动态分区和二级分区

一、参数配置

开启动态分区功能

set hive.exec.dynamic.partition=true;

允许所有分区都是动态的

set hive.exec.dynamic.partition.mode=nonstrict;

其他相关参数调优
每个 mapper 或者 reducer 可以允许创建的最大分区数,默认是100

set hive.exec.max.dynamic.partitions.pernode=1000;

每个动态分区语句可以创建的最大动态分区数,默认是1000

set hive.exec.max.dynamic.partitions =1000;

全局可以创建的最大文件个数

set hive.exec.max.created.files =10000;

二、实战

统计 payment_info 的每个支付渠道,每天的总金额,以日期来作为动态分区

create table default.payment_info_count (
    payment_type string,
    total_amount double
)
partitioned by (day string);

原始表的建表语句

create table default.payment_info (
    id bigint,
    out_trade_no string,
    order_id string,
    user_id string,
    alipay_trade_no string,
    total_amount double,
    subject string,
    payment_type string,
    payment_time string
);

统计 sql,(注意的是,系统默认以最后一个字段作为分区)

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table default.payment_info_count partition(day)
select payment_type,
       total_amount,
       day 
 from (
        select payment_type,
               sum(total_amount) total_amount,
               to_date(payment_time) day 
          from payment_info 
        group by to_date(payment_time),payment_type
) t1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值