动态分区DP(dynamic partition)
静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列实在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。
二)实战演示如何在Hive中使用动态分区
1、创建一张分区表,包含两个分区dt和ht表示日期和小时
[sql] view plain copy
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)
set hive.exec.dynamic.partition.mode=nonstrict
注:该属性默认是strict,即限制模式,避免全部分区字段都是动态的。应该必须至少一个分区字段是指定有值即静态的,且必须放在最前面。
设置为nonstrict之后所有的分区都可以是动态的了。
SET hive.exec.max.dynamic.partitions=500000(如果自动分区数大于这个参数,将会报错)
注:这个属性表示一个DML *** 作可以创建的最大动态分区数,默认是1000
SET hive.exec.max.dynamic.partitions.pernode=500000
注:这个属性表示每个节点生成动态分区的最大个数,默认是100
SET hive.exec.max.created.files=150000
注:这个属性表示一个DML *** 作可以创建的最大文件数,默认是100000
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)