在企业上使用 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 动态分区恢复静态分区表数据相关推荐

  1. HIVE 动态分区与静态分区

    HIVE分区,实际上是通过一个路径来标识的,而不是在物理数据中.比如每天的数据,可能分区是pt=20121023这样,那么路径中它就会变成:/hdfs/path/pt=20121023/data_fi ...

  2. hive动态分区shell_Hive动态分区 参数配置及语法

    Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...

  3. Hive动态分区和分桶

    Hive动态分区和分桶 1. Hive动态分区和分桶 1.Hive动态分区 1.hive的动态分区介绍 2.hive的动态分区配置 3.hive动态分区语法 2.Hive分桶 1.Hive分桶的介绍 ...

  4. Hive动态分区 参数配置及语法

    Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...

  5. hive分区用2个字段有何限制_[特性]Hive动态分区功能使用

    [特性]Hive动态分区功能使用 2016-01-31 21:40 说明 Hive有两种分区,一种是静态分区,也就是普通的分区.另一种是动态分区.动态分区在数据导入时,会根据具体的字段值自行决定导入, ...

  6. hive动态分区shell_hive-shell批量操作分区文件

    使用hive表的过程中经常需要一些便捷操作: 一.hdfs文件批量写SUCCESS文件,一般来说hive表生成结束,会产生一个_SUCCESS文件判断数据是否正常刷新完成 但是如果是动态分区插入表进行 ...

  7. hive 动态分区实现 (hive-1.1.0)

    hive 动态分区实现 (hive-1.1.0) 笔者使用的hive版本是hive-1.1.0 hive-1.1.0动态分区的默认实现是只有map没有reduce,通过执行计划就可以看出来.(执行计划 ...

  8. hive动态分区报错

    HIVE动态分区,由于动态分区个数过多,map端内存溢出,报错. containerID=container_e86_1608865192015_2953765_01_000002] is runni ...

  9. shell脚本中向hive动态分区插入数据

    在hive上建表与普通分区表创建方法一样: 1 CREATE TABLE `dwa_m_user_association_circle`( 2 `device_number` string, 3 `o ...

  10. hive动态分区,分区数据的几种插入方式,hive常用优化

    首先列举下hive分区插入的方式: 1:从文件导入数据到hive指定分区方式 load data local inpath 'filepath' into table tableName partit ...

最新文章

  1. android x86小白安装教程,小白的教程,在windows上安装完美的Android手机驱动
  2. Android典型界面设计(4)——使用ActionBar+Fragment实现tab切换
  3. 管理员必备的Linux系统监控工具
  4. JAVA里面main找不到符号_java – 带有NBAndroid的NetBeans – 找不到符号setContentView(R.layout.main);...
  5. 畅通工程续 最短路
  6. 矩形脉冲信号的_IQ信号的解调学习
  7. 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet
  8. pandas学习笔记五之pandas合并
  9. 二叉树——新二叉树(洛谷 P1305)
  10. (办公)eclipse连接github cannot open git-upload-pack(git-receive-pack)
  11. Android ToggleButton(状态切换按钮)
  12. 网易镜像 mysql_Docker的常用镜像及使用方式
  13. 中国橡胶防老剂4020市场现状与投资预测报告(2022版)
  14. 一键打开常用软件(bat/vbs)
  15. 2sum/3sum/ksum 问题
  16. 微信小程序获取头像和昵称,头像圆角设置
  17. 网络安全实验室|网络信息安全攻防 (1)基础关卡
  18. MySQL数据库题库
  19. UnicodeEncodeError: ‘latin-1‘ codec can‘t encode characters
  20. 汽车的一类、二类、三类、四类底盘是怎么划分的?

热门文章

  1. C++多线程卡死问题--访问冲突未必崩溃
  2. Xftp5 安装教程
  3. 圣光照耀联盟—PostgreSQL临时表的创建与使用过程
  4. 【数论】扩展欧几里得算法(EXTENDED-EUCLID)
  5. EXCEL中的两大函数语法(subtotal ,sumifs)
  6. 多维流数据的自适应实时异常检测
  7. 爬虫基础之动态网页数据抓取(下)
  8. Horizon Daas 模板转化映像ip地址检索获取失败
  9. 大数据分析,数据可视化之美,BI
  10. win10 uwp 使用 Border 布局