Hive动态分区

Hive动态分区

一)hive中支持两种类型的分区:

静态分区SP(static partition)
动态分区DP(dynamic partition)
静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列实在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。

二)实战演示如何在hive中使用动态分区

1、创建一张分区表,包含两个分区dt和ht表示日期和小时

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

CREATE TABLE partition_table001 
(
    name STRING,
    ip STRING
)
PARTITIONED BY (dt STRING, ht STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";

2、启用hive动态分区,只需要在hive会话中设置两个参数:

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

3、把partition_table001表某个日期分区下的数据load到目标表partition_table002 使用静态分区时,必须指定分区的值,如:

create table if not exists partition_table002 like partition_table001;
insert overwrite table partition_table002 partition (dt='20150617', ht='00') select name, ip from partition_table001 where dt='20150617' and ht='00';

此时我们发现一个问题,如果希望插入每天24小时的数据,则需要执行24次上面的语句。而动态分区会根据select出的结果自动判断数据改load到哪个分区中去。
4、使用动态分区

原文链接

你可能感兴趣的:(Hive动态分区)