wordpress修改网站名称,电商数据分析软件,网页设计论文题目大全,都江堰最新新闻头条业务中经常会遇到这种需求#xff1a;数据每天全量更新#xff0c;但是要求月底将数据单独保存一份以供后期查询某月节点的信息。这时就要考虑用到Hive的分区表实现#xff0c;即按照月份创建分区表#xff0c;相当于新的月份数据保存在新表#xff0c;进而实现保存了历史…业务中经常会遇到这种需求数据每天全量更新但是要求月底将数据单独保存一份以供后期查询某月节点的信息。这时就要考虑用到Hive的分区表实现即按照月份创建分区表相当于新的月份数据保存在新表进而实现保存了历史数据。
分区表创建
分区表的创建本质是在HDFS创建了一个分区字段为名称的文件夹插入数据时根据分区字段取值插入到文件中。
静态分区表
定义静态分区在插入数据时要指定分区名支持load、insert两种插入方式主要用于分区少分区名可以确定的情况。
动态分区表
定义动态分区在插入数据时根据指定字段取值生成分区只能使用insert方式插入数据。在定义时如果既有静态分区字段又有动态分区字段动态分区字段放在最后。
分区表创建
create table tableName(field_name1 string,field_name2 string
)
partitioned by (p_field string,pmt string comment 年月)
row format delimited fields terminated by ,
STORED AS ORC
TBLPROPERTIES(orc.compressSNAPPY) //压缩格式或者使用语句stored as parquet
tblproperties (skip.header.line.count1); // 除去首行数据载入
静态分区载入数据
-- 1、手动加载数据会在所选数据库下生成/tableName/2023-10文件
load data local inpath /path/xxxx.csv into table tableName partition (pmt2023-10);-- 2、insert插入数据(增量插入)
insert into tableName partition(p_fieldaaa,pmt2023-10)
selectfield_name1,field_name2
fromtmp_tableName-- 3、insert插入数据(全量插入)
insert overwrite table tableName partition(p_fieldaaa,pmt${date})
selectfield_name1,field_name2
fromtmp_tableName动态分区插入数据
-- 1、动静分区
-- 设置动态分区参数
set hive.exec.dynamic.partitiontrue; //开启动态分区功能
set hive.exec.dynamic.partition.modenonstrick; //默认参数strick也可实现动静分区insert overwrite table tableName partition(p_fieldaaa,pmt)
selectfield_name1,field_name2
fromtmp_tableName-- 2、动态分区
set hive.exec.dynamic.partitiontrue; //开启动态分区功能
set hive.exec.dynamic.partition.modenonstrick; insert overwrite table tableName partition(p_field,pmt)
selectfield_name1,field_name2
fromtmp_tableName-- 3、相关调优参数
set hive.exec.max.dynamic.partitions.pernode1000 //每个maper或reducer可以允许创建的最大动态分区个数默认是100超出则会报错。
set hive.exec.max.dynamic.partitions 1000 //一个动态分区语句可以创建的最大动态分区个数超出报错
set hive.exec.max.created.files 10000 //全局可以创建的最大文件个数超出报错。