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:动静态分区的更多相关文章

  1. 什么是hive的静态分区和动态分区,它们又有什么区别呢?hive动态分区详解

    面试官问我,什么是hive的静态分区和动态分区,这题我会呀. 简述 分区是hive存放数据的一种方式,将列值作为目录来存放数据,就是一个分区,可以有多列. 这样查询时使用分区列进行过滤,只需根据列值直 ...

  2. hive SQL 静态分区和 动态分区

    Hive 分区介绍: hive中简单介绍分区表(partition table),含动态分区(dynamic partition)与静态分区(static partition) hive中创建分区表没 ...

  3. Hive的静态分区和动态分区

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/6831884.html 转载请注明出处 虽然之前已经用过很多次hive的分区表,但是还是找时间快速回顾总结 ...

  4. Hive中静态分区和动态分区总结

    目录 背景 第一部分 静态分区 第二部分 动态分区 第三部分 两者的比较 第四部分 动态分区使用的问题 参考文献及资料 背景 在Hive中有两种类型的分区:静态分区(Static Partitioni ...

  5. Hive分区(静态分区+动态分区)

    Hive分区的概念与传统关系型数据库分区不同. 传统数据库的分区方式:就oracle而言,分区独立存在于段里,里面存储真实的数据,在数据进行插入的时候自动分配分区. Hive的分区方式:由于Hive实 ...

  6. Hive静态分区和动态分区

    一.静态分区 1.创建分区表 hive (default)> create table order_mulit_partition( > order_number string, > ...

  7. hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)

    一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...

  8. hive动态分区与静态分区

    测试目的:1.分区表的动态分区与静态分区2.每层数据,数据流向,数据是否在每层都保留一份测试结果:1.动态分区/静态分区略2.每层表的数据都会保留,因此在生产上odm层的数据是可以删除的(不管是内表还 ...

  9. Hive静态分区和动态分区,对应Mysql中的元数据信息

    静态分区: 手动指定分区加载数据,就是常说的静态分区的使用.但是在日常工作中用的比较多的是动态分区. 创建: hive> create table order_mulit_partition( ...

随机推荐

  1. java实现循环链表的增删功能

    java实现循环链表的增删功能,完整代码 package songyan.test.demo; public class Demo { // java 实现循环链表 public static voi ...

  2. svn 发布脚本整合

    svn提交时出现(413 Request Entity Too Large)错误解决方法 在nginx的server配置中增加 client_max_body_size 100M; linux多实例a ...

  3. diy51单片机最小系统------从零件到51整体测试成功小白篇

    前言 因为现在网上资料很多,但是很多博主水平不一样,有很多时候,自己在网上找了很多资料,因为自己智商不够,有时候感觉很多关键性的东西没说清楚,导致解决不了问题.那现在就从一个小白的角度来记录自己做过的 ...

  4. 关于js中promise的面试题。

    核心点promise在生命周期内有三种状态,分别是pending,fulfilled或rejected,状体改变只能是 pending-fulfilled,或者pending-rejected.而且状 ...

  5. [转]C++ 初始化列表的初始化顺序

    构造函数初始化列表仅用于初始化成员的值,并不指定这些初始化执行的次序.成员被初始化的次序就是定义成员的次序.第一个被定义的成员先被初始化,依次类推.一般,初始化的顺序无关紧要,然而,如果一个成员是根据 ...

  6. [BZOJ 1040][ZJOI2008]骑士

    1040: [ZJOI2008]骑士 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5403  Solved: 2060[Submit][Status ...

  7. Java基础学习笔记十七 集合框架(三)之Map

    Map接口 通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的集合,元素是孤立存在的(理解为单身),向集合中存 ...

  8. QTableView

    QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: 一 添加表头 //准备数据模型     QStandardItemModel *student_model = ne ...

  9. 201621123031 《Java程序设计》第1周学习总结

    作业01-Java基本概念 1.本周学习总结 1.本周学习内容:Java发展史(简述).Java语言特点.JDK .JRE .JVM .Java的开发步骤.Java开发工具. 2.关键概念之间的联系: ...

  10. nyoj 概率计算

    概率计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 A和B两个人参加一场答题比赛.比赛的过程大概是A和B两个人轮流答题,A先答.一旦某人没有正确回答问题,则对手 ...