本文主要是介绍【硬刚Hive】Hive基础(12):Hive语法(6) DDL(3) hive动态分区,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。
1.创建一个单一字段分区表
1 hive>
2 create table dpartition(id int ,name string )
3 partitioned by(ct string );
2.往表里装载数据,并且动态建立分区,以city建立动态分区
1 hive>2 hive.exec.dynamici.partition=true; #开启动态分区,默认是false3 set hive.exec.dynamic.partition.mode=nonstrict; #开启允许所有分区都是动态的,否则必须要有静态分区才能使用。4 insert overwrite table dpartition5 partition(ct)6 select id ,name,city from mytest_tmp2_p; 7 8 要点:因为dpartition表中只有两个字段,所以当我们查询了三个字段时(多了city字段),所以系统默认以最后一个字段city为分区名ÿ
这篇关于【硬刚Hive】Hive基础(12):Hive语法(6) DDL(3) hive动态分区的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!