Hive:动静态分区
http://hugh-wangp.iteye.com/blog/1612268
http://blog.csdn.net/opensure/article/details/46537969
- 使用静态分区,创建分区表p_test:
在创建分区表之前需要去人参数是否如下:
0: jdbc:hive2://10.8.1.2:6611/> set hive.exec.dynamic.partition.mode;
+------------------------------------------+--+
| set |
+------------------------------------------+--+
| hive.exec.dynamic.partition.mode=strict |
+------------------------------------------+--+
1 row selected (0.013 seconds)
0: jdbc:hive2://10.8.1.2:6611/> set hive.exec.dynamic.partition;
+-----------------------------------+--+
| set |
+-----------------------------------+--+
| hive.exec.dynamic.partition=true |
+-----------------------------------+--+
如果不是需要修改参数,创建分区表
create table p_test(id string,name string)
partitioned by (p_day string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
添加静态分区
alter table p_test add partition (p_day='');
查看分区表是否创建好,及存储目录
0: jdbc:hive2://10.78.152.62:21066/> show partitions p_test;
+-----------------+--+
| partition |
+-----------------+--+
| p_day=20170619 |
+-----------------+--+
1 row selected (0.143 seconds)
0: jdbc:hive2://10.78.152.62:21066/> [tt@jh01 service]$ hadoop fs -ls /jrc/jrc_hive_db/p_test
17/06/20 21:27:44 INFO hdfs.PeerCache: SocketCache disabled.
Found 1 items
drwxrwx---+ - jrc jrc_group 0 2017-06-20 21:24 /jrc/jrc_hive_db/p_test/p_day=20170619
指定分区插入已经存在的分区中数据:
insert into p_test partition(p_day='')
select '' as id,'name1' as name;
指定不存在的分区,并插入数据:
0: jdbc:hive2://10.8.1.2:6611/> insert into p_test partition(p_day='')
0: jdbc:hive2://10.8.1.2:6611/> select '' as id,'name1' as name;
0: jdbc:hive2://10.8.1.2:6611/> select * from p_test;
+------------+--------------+---------------+--+
| p_test.id | p_test.name | p_test.p_day |
+------------+--------------+---------------+--+
| 1 | name1 | 20170619 |
| 1 | name1 | 20170620 |
+------------+--------------+---------------+--+
2 rows selected (1.8 seconds)
0: jdbc:hive2://10.8.1.2:6611/> show partitions p_test;
+-----------------+--+
| partition |
+-----------------+--+
| p_day=20170619 |
| p_day=20170620 |
+-----------------+--+
2 rows selected (0.281 seconds)
0: jdbc:hive2://10.8.1.2:6611/>
动态分区插入:
0: jdbc:hive2://10.8.1.2:6611/> insert into p_test partition(p_day)
0: jdbc:hive2://10.8.1.2:6611/> select '' as id,'name3' as name,'' as p_day;
Error: Error while compiling statement: FAILED: SemanticException [Error 10096]: Dynamic partition strict mode requires at least one static partition column.
To turn this off set hive.exec.dynamic.partition.mode=nonstrict (state=42000,code=10096)
插入失败,根据错误提示需要修改参数:set hive.exec.dynamic.partition.mode=nonstrict
set hive.exec.dynamic.partition.mode=nonstrict;
insert into p_test partition(p_day)
select '' as id,'name3' as name,'' as p_day; 0: jdbc:hive2://10.8.1.2:6611/> select * from p_test;
+------------+--------------+---------------+--+
| p_test.id | p_test.name | p_test.p_day |
+------------+--------------+---------------+--+
| 1 | name1 | 20170619 |
| 1 | name1 | 20170620 |
| 3 | name3 | 20170621 |
+------------+--------------+---------------+--+
示例二:
已知表mitem表包含了p_ciy,p_hour字段,我们新建一张分区表mitem_partition(分区字段包括:p_city,p_hour),将mitem数据导入mitem_partition.
create table mitem_partition
(
id int,
ueid string,
time timestamp,
srp double,
srq double,
sul double,
nid int,
nrp double
) partitioned by (p_city string,p_hour string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; set hive.exec.dynamic.partition.mode=nonstrict;
insert into mitem_partition partition(p_city,p_hour)
select (cast(split(s_cgi,'-')[] as int)*256+cast(split(s_cgi,'-')[] as int)) as id,ueid,time,srp-141 as srp,srq*0.5-20 as srq,
sul-11 as sul,(cast(split(n_cgi,'-')[] as int)*256+cast(split(n_cgi,'-')[] as int)) as nid,nrp-141 as nrp,
p_city,p_hour
from mitem
where p_city='wuhan' and p_hour>='' and p_hour<''
备注:
1)如果分区表中想删除某个字段就比较费事。
Hive:动静态分区的更多相关文章
- 什么是hive的静态分区和动态分区,它们又有什么区别呢?hive动态分区详解
面试官问我,什么是hive的静态分区和动态分区,这题我会呀. 简述 分区是hive存放数据的一种方式,将列值作为目录来存放数据,就是一个分区,可以有多列. 这样查询时使用分区列进行过滤,只需根据列值直 ...
- hive SQL 静态分区和 动态分区
Hive 分区介绍: hive中简单介绍分区表(partition table),含动态分区(dynamic partition)与静态分区(static partition) hive中创建分区表没 ...
- Hive的静态分区和动态分区
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/6831884.html 转载请注明出处 虽然之前已经用过很多次hive的分区表,但是还是找时间快速回顾总结 ...
- Hive中静态分区和动态分区总结
目录 背景 第一部分 静态分区 第二部分 动态分区 第三部分 两者的比较 第四部分 动态分区使用的问题 参考文献及资料 背景 在Hive中有两种类型的分区:静态分区(Static Partitioni ...
- Hive分区(静态分区+动态分区)
Hive分区的概念与传统关系型数据库分区不同. 传统数据库的分区方式:就oracle而言,分区独立存在于段里,里面存储真实的数据,在数据进行插入的时候自动分配分区. Hive的分区方式:由于Hive实 ...
- Hive静态分区和动态分区
一.静态分区 1.创建分区表 hive (default)> create table order_mulit_partition( > order_number string, > ...
- hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)
一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...
- hive动态分区与静态分区
测试目的:1.分区表的动态分区与静态分区2.每层数据,数据流向,数据是否在每层都保留一份测试结果:1.动态分区/静态分区略2.每层表的数据都会保留,因此在生产上odm层的数据是可以删除的(不管是内表还 ...
- Hive静态分区和动态分区,对应Mysql中的元数据信息
静态分区: 手动指定分区加载数据,就是常说的静态分区的使用.但是在日常工作中用的比较多的是动态分区. 创建: hive> create table order_mulit_partition( ...
随机推荐
- 二分partition算法应用
一个二分partition算法,将整个数组分解为小于某个数和大于某个数的两个部分,然后递归进行排序算法. 法一: int partition(vector<int>&arr, in ...
- new Image的API
- npm 和bower之间的区别
(一) npm是node js的包管理器,用来下载安装node js的第三方工具包,也可以用来发布你自己开发的工具包.通过npm可以安装bower,命令如下: npm install -g bower ...
- Redis Setex命令
Redis SETEX命令用于在Redis键中的指定超时,设置键的字符串值. 返回值 字符串,如果在键中设置了值则返回OK.如果值未设置则返回 Null. 语法 下面是Redis SETEX命令的基本 ...
- Java多线程:ThreadLocal
一.ThreadLocal基础知识 ThreadLocal是线程的一个本地化对象,或者说是局部变量.当工作于多线程中的对象使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的 ...
- 关于Netty的入门使用
Netty介绍: Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 换句话说,Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比 ...
- 有序的map LinkedHashMap
HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方.所以在按照一定顺序put进HashMap中,然后遍历出HashMap的顺序跟put的顺 ...
- Eclipse+Pydev环境搭建
1,准备好Eclipse和JAVA,x64 2,安装JDK,配置JAVA环境变量,假设安装路径为 C:\Program Files\Java\jdk1.8.0_161 在系统变量中,新建CLASSPA ...
- [福大软工] W班 软件产品案例分析
作业要求 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1300 评分细则 第一部分 调研,评测 (3 ...
- C语言第十次作业
一.PTA实验作业 题目1:按等级统计学生成绩 1. 本题PTA提交列表 2.设计思路 int i,count =0 用来计未及格数 for i =0 to n if 指针p+i 指向的成绩score ...