动态分区

Hive动态分区

应用场景: 不确定分区数量,数据量也不是很大,使用动态分区

动态分区,其可以基于查询参数的位置去推断分区的名称,从而建立分区。
Hive的动态分区,其实就是把静态分区中的分区值设置为动态的值

insert overwrite table dynamic_ partition partition(year=year)
select user_ _id, user_ _name, year from demo

语句中par tition(year=year)会根据具体值的变化而变化,无需手动指定,这对于大批量的分区插入是-个很方便的用法,但需要根据业务
需求衡量分区数量是否合理的问题。毕竟分区会占用IO资源,数量越多,I0资源消耗越大,查询时间和性能都是有所损耗的。

使用动态分区表必须配置的参数 :
    set hive.exec.dynamic.partition =true(默认false),表示开启动态分区功能
    set hive.exec.dynamic.partition.mode = nonstrict(默认strict),表示允许所有分区都是动态的,否则必须有静态分区字段
 
 动态分区相关的调优参数:
    set  hive.exec.max.dynamic.partitions.pernode=100 (默认100,一般可以设置大一点,比如1000)
       表示每个maper或reducer可以允许创建的最大动态分区个数,默认是100,超出则会报错。
   set hive.exec.max.dynamic.partitions =1000(默认值) 
       表示一个动态分区语句可以创建的最大动态分区个数,超出报错
   set hive.exec.max.created.files =10000(默认) 
       全局可以创建的最大文件个数,超出报错。

posted on 2022-06-07 19:08  唯一的Dove  阅读(328)  评论(0)    收藏  举报

导航