美文网首页Hive
Hive动态分区

Hive动态分区

作者: 明明德撩码 | 来源:发表于2018-03-14 11:20 被阅读119次

一)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、使用动态分区

insert overwrite table partition_table002 partition (dt, ht) select * from partition_table001 where dt='20150617';

hive先获取select的最后两个位置的dt和ht参数值,然后将这两个值填写到insert语句partition中的两个dt和ht变量中,即动态分区是通过位置来对应分区值的。原始表select出来的值和输出partition的值的关系仅仅是通过位置来确定的,和名字并没有关系,比如这里dt和st的名称完全没有关系。
只需要一句SQL即可把20150617下的24个ht分区插到了新表中。

相关文章

  • 动态分区说明

    Hive分区 Hive的动态分区 概述 hive中支持两种类型的分区: 静态分区SP(static partiti...

  • Hive动态分区

    Hive动态分区 几个参数set hive.exec.dynamic.partition=true //使用动态分...

  • Hive应用实验-DDL常用命令

    开启动态分区set hive.exec.dynamic.partition=true;set hive.exec....

  • Hive、Spark SQL任务参数调优

    动态分区 参数说明hive.exec.dynamic.partition是否开启动态分区,默认是false。如果要...

  • 【转载】hive使用技巧

    自动化动态分配表分区及修改hive表字段名称 1、自动化动态分配表分区 set hive.exec.dynamic...

  • Hive动态分区

    一)hive中支持两种类型的分区: 静态分区SP(static partition)动态分区DP(dynamic ...

  • Hive简易教程 - 杂项

    设置打印列名 set hive.cli.print.header=true; 设置动态分区 set hive.ex...

  • Hive 动态分区

    Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中。现在假定有一个已有数据的表st...

  • hive 动态分区

    目的,往分区表中插入数据: 创建一个分区表:插入数据报错,原因是没有开启动态分区 执行命令: set hive.e...

  • hive 动态分区实现 (hive-1.1.0)

    笔者使用的hive版本是hive-1.1.0 hive-1.1.0动态分区的默认实现是只有map没有reduce,...

网友评论

    本文标题:Hive动态分区

    本文链接:https://www.haomeiwen.com/subject/gpwzfftx.html