HQL之动态分区调整
动态分区插入可以基于查询语句分出出要插入的分区名称。比如,下面向分区表插入数据的SQL:
insert into table chavin.emp_pat partition(dname,loc)
select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno,d.dname,d.loc
from dept d join emp e on d.deptno=e.deptno;
hive会根据select字段的最后两个字段确定分区字段的值(上面sql中即根据d.dname,d.loc的值确定partition(dname,loc)中dname和loc的值),分区字段值的确定是根据位置而不是根据内容确定的,这点尤其需要注意。当然,对于多分区表的插入,可以混合使用静态分区和动态分区的方法,并且静态分区字段必须出现在动态分区字段之前,如下:
insert into table chavin.emp_pat partition(dname=' NEW YORK',loc)
select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno,d.dname,d.loc
from dept d join emp e on d.deptno=e.deptno
where d.dname=' NEW YORK';
针对于hive 0.13.1版本,动态分区插入默认是开启的,但是默认是以strict模式执行。在strict模式下,要求至少有一个分区字段是静态分区字段。
hive动态分区插入的一些属性如下:
hive (chavin)> set hive.exec.dynamic.partition;
hive.exec.dynamic.partition=true
--true表示开启动态分区插入功能。
hive (chavin)> set hive.exec.dynamic.partition.mode;
hive.exec.dynamic.partition.mode=strict
--设置为nonstrict模式,表示所有分区都可以是动态分区字段。
hive (chavin)> set hive.exec.max.dynamic.partitions.pernode;
hive.exec.max.dynamic.partitions.pernode=100
--每个mapper或reduce任务可以创建的最大分区数,如果mapper或reduce任务创建了比这个值大的分区数,则抛出致命错误。
hive (chavin)> set hive.exec.max.dynamic.partitions;
hive.exec.max.dynamic.partitions=1000
--一个动态分区创建语句可以创建的最大动态分区数,如果创建数量超过这个值,则抛出致命错误。
hive (chavin)> set hive.exec.max.created.files;
hive.exec.max.created.files=100000
--全局可以创建的最大文件个数,有一个全局hadoop计数器会跟踪记录创建的文件数,如果超过了限制值则抛出致命错误信息。
hive (chavin)> set dfs.datanode.max.xcievers;
dfs.datanode.max.xcievers=4096
--datanode参数,配置在hdfs-site.xml中,表示一次可以打开的最大文件个数。
如下是动态分区插入的一个小例子:
1)创建分区表:
create table chavin.EMP_pat
(
EMPNO int,
ENAME string,
JOB string,
MGR int,
HIREDATE string,
SAL float,
COMM float,
DEPTNO int
) partitioned by(dname string,loc string)
row format delimited fields terminated by '\t';
2)设置动态分区参数,向分区表插入数据:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=100;
insert into table chavin.emp_pat partition(dname,loc)
select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno,d.dname,d.loc
from dept d join emp e on d.deptno=e.deptno;
HQL之动态分区调整的更多相关文章
- 第4节 hive调优:动态分区调整问题
执行如下截图中的语句时卡住了: 原因:yarn未启动,hive底层是要提交mapreduce到yarn上才能计算结果的. 之前启动yarn时,未执行jps查看是否已经启动.其实未启动成功: [root ...
- Hive动态分区详解
目录 动态分区调整 注意 动态分区插入 动静分区结合 例子 动态分区调整 动态分区属性:设置为true表示开启动态分区功能(默认为false)hive.exec.dynamic.partition=t ...
- Hive学习之动态分区及HQL
Hive动态分区 1.首先创建一个分区表create table t10(name string) partitioned by(dt string,value string)row format d ...
- sqoop导oracle数据到hive中并动态分区
静态分区: 在hive中创建表可以使用hql脚本: test.hql USE TEST; CREATE TABLE page_view(viewTime INT, userid BIGINT, pag ...
- Hive Experiment 2(表动态分区和IDE)
1.使用oracle sql developer 4.0.3作为hive query的IDE. 下载hive-jdbc driver http://www.cloudera.com/content/c ...
- 日志案例分析(PV,UV),以及动态分区
1.实现的流程 需求分析 时间:日,时段 分区表:两级 PV UV 数据清洗 2015-08-28 18:19:10 字段:id,url,guid,tracktime 数据分析 导出 2.新建源数据库 ...
- 对现有Hive的大表进行动态分区
分区是在处理大型事实表时常用的方法.分区的好处在于缩小查询扫描范围,从而提高速度.分区分为两种:静态分区static partition和动态分区dynamic partition.静态分区和动态分区 ...
- Hive分区(静态分区+动态分区)
Hive分区的概念与传统关系型数据库分区不同. 传统数据库的分区方式:就oracle而言,分区独立存在于段里,里面存储真实的数据,在数据进行插入的时候自动分配分区. Hive的分区方式:由于Hive实 ...
- hive:默认允许动态分区个数为100,超出抛出异常:
在创建好一个分区表后,执行动态分区插入数据,抛出了错误: Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Erro ...
随机推荐
- Xcode 常用设置
1.main 文件注释 1)main 文件注释修改路径 /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Proje ...
- vue.js开发SPA常见问题及解决方法
列表进入详情页的传参问题. 例如商品列表页面前往商品详情页面,需要传一个商品id; <router-link :to="{path: 'detail', query: {id: 1}} ...
- LeetCode: Find Peak Element 解题报告
Find Peak Element A peak element is an element that is greater than its neighbors. Given an input ar ...
- 【Java】移动JDK路径后,修改环境变量不生效 Error: could not open `C:\Program Files\Java\jre1.8.0_131\lib\amd64\jvm.cfg'
场景: JDK原先装在C盘的,现在移动到了D盘,并在环境变量修改了%JAVA_HOME%的新路径,但是CMD中输入java后依然报错. Error: could not open `C:\Progra ...
- Java知多少(55)线程
和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming). 多线程程序包含两条或两条以上并发运行的部分.程序中每个这样的部分都叫一个线程(thread ...
- 开发过程中遇到的问题1--------我们的mysql的查询语句时自己写的,没有用oracle的nextvalue函数。所以这里涉及到了并发的问题。
效果http://www.cnblogs.com/wanggangblog/p/4037543.html 很多的采购单会生成.生成的时候会有订单的编号,然后一个采购单的编号是唯一的,怎么生成呢?之前o ...
- Git -- 忽略特殊文件
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定 ...
- RedisLive监控工具 windows部署笔记
1. Python2.7环境安装 Path环境变量中添加 2.下载安装 VC Compiler for Python 地址: http://www.microsoft.com/en-us/dow ...
- 【Math】根据置信度、样本数相关推导过程
时间长了会忘,备忘下. http://blog.csdn.net/liangzuojiayi/article/details/78044780 http://wiki.mbalib.com/wiki/ ...
- 02工厂方法模式FactoryMethod
一.什么是工厂方法模式 工厂方法模式同样属于类的创建型模式又被称 为多态工厂模式 .工厂方法模式的意义是定义一个创建 产品对象的工厂接口,将实际创建工作推迟到子类当中. 核心工厂类不再负责产品的创建, ...