我们在业务中往往会遇到一种情况就是:

现有的业务已经有很多的数据堆积,并且需要根据现有的数据以分区的形式来建立数据仓库,这样的话就需要将表中的一个字段作为分区字段,以这个字段的值作为分区的依据。

那么就需要动态分区进行处理:

首先需要设置参数:


-- 表示开启动态分区功能 (默认false)
set hive.exec.dynamic.partition =true--(默认strict),表示允许所有分区都是动态的,否则必须有静态分区字段
set hive.exec.dynamic.partition.mode = nonstrict

然后是可以调整的参数:(在这里遇到过坑,分区数太多,超出默认限制)

set  hive.exec.max.dynamic.partitions.pernode=100 (默认100,一般可以设置大一点,比如1000)

表示每个maper或reducer可以允许创建的最大动态分区个数,默认是100,超出则会报错。

set hive.exec.max.dynamic.partitions =1000(默认值)

表示一个动态分区语句可以创建的最大动态分区个数,超出报错

set hive.exec.max.created.files =10000(默认) 全局可以创建的最大文件个数,超出报错。

设置完参数之后,将原有的数据映射成临时表,将所有的字段映射进去,包括分区的字段。

然后设置分区表,跟临时表少了一个字段,就是分区的字段,

然后插入分区表,注意bdp_day是分区字段,在临时表中的最后需要查询出来,然后默认以临时表的最后一个字段作为分区字段,插入数据。

insert overwrite table ods_release.ods_01_release_session partition(bdp_day)
select
rel.release_session,
rel.release_status,
rel.device_num,
rel.device_type,
rel.sources,
rel.channels,
from_unixtime(rel.ct,'HH'),
from_unixtime(rel.ct,'yyyy-MM-dd HH:mm:ss'),
from_unixtime(rel.ct,'yyyy-MM-dd') as bdp_day
from
ods_release.ods_01_release_session_tmp rel

这样就将bdp_day的值作为分区的值,分成多个分区存储,也就是在hdfs中分成了多个目录进行存储。

hive实现全自动动态分区相关推荐

  1. hive:默认允许动态分区个数为100,超出抛出异常:

    hive:默认允许动态分区个数为100,超出抛出异常: 参考文章: (1)hive:默认允许动态分区个数为100,超出抛出异常: (2)https://www.cnblogs.com/yy3b2007 ...

  2. hive静态与动态分区理解

    需要建立一个备份带分区的数据表,拷贝时若采用静态分区方式需要写 N 行语句,因此可以使用动态分区,节省大量时间. Hive 的分区方式:由于 Hive 实际是存储在 HDFS 上的抽象,Hive 的一 ...

  3. mysql 分桶_使用hive脚本一键动态分区、分区又分桶以及脚本步骤详细详解(亲测成功)...

    一.动态分区以及从linux本地文件映射到hive表中. partitioned.sql脚本中的创造数据: mkdir /mytemp cd mytemp vi stu_score.txt 1,zha ...

  4. 82.Hive SQL插入动态分区的异常分析

    82.1 问题情况 INSERT - SELECT语句向Parquet或者ORC格式的表中插入数据时,启用了动态分区,无法正常执行 Hive客户端: Task with the most failur ...

  5. Hive动态分区导致的Jobtracker Hang

    昨天下午有20多分钟Hadoop平台无法跑Hive,Jobtracker的页面也打不开,hadoop job –list也hang住没有响应,过了10分钟后恢复了,查看gc日志发现Jobtracker ...

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

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

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

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

  8. Hive的分区(partition)-动态分区

    Hive的分区 声明:本文为博主参考网上资料整理的文章,未经博主允许不得转载,如有问题,欢迎指正. 一.概述 分区是hive存放数据的一种方式.将列值作为目录来存放数据,就是一个分区.这样查询时使用分 ...

  9. hive分区用2个字段有何限制_关于Hive使用动态分区插入数据详解

    1.创建一个单一字段分区表 hive>  create table dpartition(id int ,name string ) partitioned by(ct string  ); 2 ...

最新文章

  1. linux 脚本设置时间戳,修改linux系统时间的方法(date命令)
  2. centos7.0改变用户创建目录组权限
  3. 【Nginx】Nginx概述
  4. Fluent Ribbon 第三步 应用程序菜单
  5. java 新区 老区_优学院《土地资源学》答案在线查题2020高校邦《Java核心开发技术【实境编程】》章测试答案...
  6. 简述UTF-8编码原理及其文本文件的读写技术 【转】
  7. 使用C#语言,从Excel2007中读取数据,并显示到Form中的DataGridView。
  8. KindEditor - 代码高亮
  9. Google--PageRank(网页级别)技术解密[转]
  10. vscode 使用pem文件免密连接服务器
  11. 旧项目归档:旅游年卡-旅游直通车-微信二级分销推广会员-汽车租赁-金币提现-司机乘务管理-景点线路乘车预约
  12. 运算放大器参数的详细解释和分析-运放压摆率(SR)
  13. JSP+实验室设备管理 毕业设计-附源码191409
  14. 【Excel】Excel无序数据模糊查询
  15. PCL点云库(2) — IO模块
  16. C语言模拟回合制游戏 源码
  17. 十大工业设计公司是如何排名的?
  18. mongodb与mysql连接_MongoDB连接数据库
  19. 未成熟男人; 成熟男人
  20. mysql插入数据变慢的原因_mysql插入数据变慢的原因

热门文章

  1. ArcGIS转KML
  2. 有趣的Python图片制作,用QQ好友头像拼接出里昂
  3. 【转】SAP Credit Memo Debit Memo
  4. 迎接平价时代,光伏逆变器的行业演进和格局
  5. 开源项目分享-健身房管理系统
  6. java uuid 字符串_Java UUID fromString()用法及代码示例
  7. java项目-宿舍管理系统
  8. Android9.0 添加APP后台防杀机制
  9. 【运维面试】面试官: tomcat三个端口号的作用
  10. python跳出两层for_干货 | 收藏!16段代码入门Python循环语句