hive动态分区

hive静态分区需要制定分区字段的值插入分区数据,动态分区可以根据分区字段的值自动插入对应分区。使用Hive的动态分区,需要进行相应的配置。

-- 设置成true,可以选择GZip压缩方式
set hive.exec.compress.output=true;
-- GZip压缩方式具有很好的压缩效果,减少I/O,GZip压缩格式文件是不允许被分割的
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
-- 是否开启动态分区功能,默认false关闭。使用动态分区时候,该参数必须设置成true
set hive.exec.dynamic.partition=true;
-- 动态分区的模式,默认strict,表示必须指定至少一个分区为静态分区,nonstrict模式表示允许所有的分区字段都可以使用动态分区。
set hive.exec.dynamic.partition.mode=nonstrict;
-- 在所有执行MR的节点上,最大一共可以创建多少个动态分区
SET hive.exec.max.dynamic.partitions=100000;
-- 在每个执行MR的节点上,最大可以创建多少个动态分区 
SET hive.exec.max.dynamic.partitions.pernode=100000;

INSERT overwrite TABLE stg_tmp.${hiveconf:TABLE_NAME} PARTITION (DAY,SOURCE)
SELECT *
FROM stg.${hiveconf:TABLE_NAME}
WHERE DAY=${hiveconf:CURRENT_DATE}
  AND SOURCE=200
DISTRIBUTE BY rand();
-- DISTRIBUTE BY rand() 保证reduce中的数据随机分配,大小大致相同、防止小文件过多和数据倾斜
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值