Hive 动态分区恢复静态分区表数据
在企业上使用 Hive 进行离线批量数据统计时,有时会遇到 Oozie 工作流调度失败,导致很多 ptdate 时间分区没有数据,可以通过 Hive 创建临时表存储所有缺失的ptdate时间分区数据,然后通过Hive动态分区查询临时表导入数据至最终统计结果表中。
一、在正式介绍 Hive 动态分区恢复静态分区表数据时,先介绍一下 hive load 导入数据的用法
hive load 用法:
(1)从本地加载文件中的数据并覆盖至表 lake_bg_ods.bigdata_test_20190905 中
load data local inpath '/home/bigdata/bigdata_test_20190905.txt'
overwrite table lake_bg_dm.bigdata_test_20190905;
(2)从HDFS上加载文件中的数据并追加至表 lake_bg_ods.bigdata_test_20190905 中
load data inpath '/home/bigdata/bigdata_test_20190905.txt'
into table lake_bg_dm.bigdata_test_20190905;
备注:
关键字 local 不加,数据从HDFS上加载;如果加 local ,数据从本地加载。
关键字 overwrite 为覆盖加载,会覆盖掉原有的数据; into 为 文件末尾追加数据,不会覆盖掉原有的数据。
二、Hive 动态分区恢复静态分区表数据
SET hive.exec.dynamic.partition=true; --(默认false),表示开启动态分区功能
SET hive.exec.dynamic.partition.mode=nonstrict; -- (默认strict),表示允许所有分区都是动态的,否则必须有静态分区字段
--每个maper或reducer可以允许创建的最大动态分区个数,默认是100,超出则会报错
SET hive.exec.max.dynamic.partitions.pernode = 1000;
-- 一个动态分区语句可以创建的最大动态分区个数,超出报错
SET hive.exec.max.dynamic.partitions=1000;
insert overwrite table lake_bg_dm.bigdata_test_20190905 partition(ptdate= ${ptdate}) --手动分区
select * from lake_bg_edw.bsl_bigdata_tmp;
insert into table lake_bg_dm.bigdata_test_20190905 partition(ptdate= ${ptdate}) --手动分区
select * from lake_bg_edw.bsl_bigdata_tmp;
insert overwrite lake_bg_dm.bigdata_test_20190905
partition(ptdate= ${ptdate}) --动态分区
select *, ptdate from lake_bg_edw.bsl_bigdata_tmp;
insert overwrite 会覆盖表或分区中已存在的数据
insert into 以追加数据的方式插入到表或分区,原有数据不会删除
insert 可以插入表或分区,如果表是分区表,则 insert 时需要指定插入到哪个分区
Hive 动态分区恢复静态分区表数据相关推荐
- HIVE 动态分区与静态分区
HIVE分区,实际上是通过一个路径来标识的,而不是在物理数据中.比如每天的数据,可能分区是pt=20121023这样,那么路径中它就会变成:/hdfs/path/pt=20121023/data_fi ...
- hive动态分区shell_Hive动态分区 参数配置及语法
Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...
- Hive动态分区和分桶
Hive动态分区和分桶 1. Hive动态分区和分桶 1.Hive动态分区 1.hive的动态分区介绍 2.hive的动态分区配置 3.hive动态分区语法 2.Hive分桶 1.Hive分桶的介绍 ...
- Hive动态分区 参数配置及语法
Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...
- hive分区用2个字段有何限制_[特性]Hive动态分区功能使用
[特性]Hive动态分区功能使用 2016-01-31 21:40 说明 Hive有两种分区,一种是静态分区,也就是普通的分区.另一种是动态分区.动态分区在数据导入时,会根据具体的字段值自行决定导入, ...
- hive动态分区shell_hive-shell批量操作分区文件
使用hive表的过程中经常需要一些便捷操作: 一.hdfs文件批量写SUCCESS文件,一般来说hive表生成结束,会产生一个_SUCCESS文件判断数据是否正常刷新完成 但是如果是动态分区插入表进行 ...
- hive 动态分区实现 (hive-1.1.0)
hive 动态分区实现 (hive-1.1.0) 笔者使用的hive版本是hive-1.1.0 hive-1.1.0动态分区的默认实现是只有map没有reduce,通过执行计划就可以看出来.(执行计划 ...
- hive动态分区报错
HIVE动态分区,由于动态分区个数过多,map端内存溢出,报错. containerID=container_e86_1608865192015_2953765_01_000002] is runni ...
- shell脚本中向hive动态分区插入数据
在hive上建表与普通分区表创建方法一样: 1 CREATE TABLE `dwa_m_user_association_circle`( 2 `device_number` string, 3 `o ...
- hive动态分区,分区数据的几种插入方式,hive常用优化
首先列举下hive分区插入的方式: 1:从文件导入数据到hive指定分区方式 load data local inpath 'filepath' into table tableName partit ...
最新文章
- android x86小白安装教程,小白的教程,在windows上安装完美的Android手机驱动
- Android典型界面设计(4)——使用ActionBar+Fragment实现tab切换
- 管理员必备的Linux系统监控工具
- JAVA里面main找不到符号_java – 带有NBAndroid的NetBeans – 找不到符号setContentView(R.layout.main);...
- 畅通工程续 最短路
- 矩形脉冲信号的_IQ信号的解调学习
- 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet
- pandas学习笔记五之pandas合并
- 二叉树——新二叉树(洛谷 P1305)
- (办公)eclipse连接github cannot open git-upload-pack(git-receive-pack)
- Android ToggleButton(状态切换按钮)
- 网易镜像 mysql_Docker的常用镜像及使用方式
- 中国橡胶防老剂4020市场现状与投资预测报告(2022版)
- 一键打开常用软件(bat/vbs)
- 2sum/3sum/ksum 问题
- 微信小程序获取头像和昵称,头像圆角设置
- 网络安全实验室|网络信息安全攻防 (1)基础关卡
- MySQL数据库题库
- UnicodeEncodeError: ‘latin-1‘ codec can‘t encode characters
- 汽车的一类、二类、三类、四类底盘是怎么划分的?