Hive动态分区表的创建、及数据加载
你吻我是因为你寂寞,我不反抗是因为我爱你

往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中日期字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。
在创建动态分区表时,首先要在当前会话窗口做如下设置
set hive.exec.dynamic.partition =true
set hive.exec.dynamic.partition.mode = nonstrict
创建动态分区表
CREATE TABLE if not exists Person_Score (
occurTime string, --成绩记录时间(以日期作为分区字段)
name string, --学生姓名
score int --学生成绩
)
PARTITIONED BY (runtime string) --分区字段名称,该名称可以随意
row format delimited fields terminated by ','
stored as textfile
测试数据
将Person_Score_tmp表的数据,根据日期字段插入动态分区表Person_Score中

未插入数据前,该分区表Person_Score在hdfs的目录下没有任何文件

将Person_Score_tmp表的数据插入Person_Score中
注意:动态分区表只能通过insert overwrite的方式加载,并且查询的字段要和创建表的字段一致,查询字段的最后一个字段默认是分区表的字段
insert overwrite table Person_Score partition(runtime) select occurTime,name,score,occurTime from Person_Score_tmp;
最终效果,动态分区表在指定目录下生成多个分区文件

重要的事情说三遍
查询字段的最后一个字段默认是分区表的字段
查询字段的最后一个字段默认是分区表的字段
查询字段的最后一个字段默认是分区表的字段

拉屎的时候,
为什么要玩手机......?
如果不玩手机,
玩屎吗......?
Original: https://blog.csdn.net/weixin_42327882/article/details/108665345
Author: 麦兜大叔
Title: Hive动态分区表的创建、及数据加载
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/13449/
转载文章受原作者版权保护。转载请注明原作者出处!