动态分区
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(默认)
全局可以创建的最大文件个数,超出报错。
浙公网安备 33010602011771号