Hive静态分区表&动态分区表
静态分区表:
一级分区表:
CREATE TABLE order_created_partition (
orderNumber STRING
, event_time STRING
)
PARTITIONED BY (event_month string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
加载数据方式一:从本地/HDFS目录加载
load data local inpath '/home/spark/software/data/order_created.txt' overwrite into table order_created_partition PARTITION(event_month='2014-05');
select * from order_created_partition where event_month='2014-05';
+-----------------+-----------------------------+--------------+
| ordernumber | event_time | event_month |
+-----------------+-----------------------------+--------------+
| 10703007267488 | 2014-05-01 06:01:12.334+01 | 2014-05 |
| 10101043505096 | 2014-05-01 07:28:12.342+01 | 2014-05 |
| 10103043509747 | 2014-05-01 07:50:12.33+01 | 2014-05 |
| 10103043501575 | 2014-05-01 09:27:12.33+01 | 2014-05 |
| 10104043514061 | 2014-05-01 09:03:12.324+01 | 2014-05 |
+-----------------+-----------------------------+--------------+
加载数据方式二:手工上传文件到hdfs上,然后将数据添加到分区表指定的分区:
1) 创建hdfs目录:在hdfs目录:/user/hive/warehouse/order_created_partition目录下创建event_month=2014-06
hadoop fs -mkdir /user/hive/warehouse/order_created_partition/event_month=-
2)拷贝数据到新创建的目录下:
hadoop fs -put /home/spark/software/data/order_created.txt /user/hive/warehouse/order_created_partition/event_month=-
select * from order_created_partition where event_month='2014-06'; #发现查询结果是空的
3)添加新分区数据到元数据信息中:
msck repair table order_created_partition;
输出日志信息:
Partitions not in metastore: order_created_partition:event_month=-
Repair: Added partition to metastore order_created_partition:event_month=-
或者: alter table order_created_partition add partition(dt='2014-06');
select * from order_created_partition where event_month='2014-06';
+-----------------+-----------------------------+--------------+
| ordernumber | event_time | event_month |
+-----------------+-----------------------------+--------------+
| 10703007267488 | 2014-05-01 06:01:12.334+01 | 2014-06 |
| 10101043505096 | 2014-05-01 07:28:12.342+01 | 2014-06 |
| 10103043509747 | 2014-05-01 07:50:12.33+01 | 2014-06 |
| 10103043501575 | 2014-05-01 09:27:12.33+01 | 2014-06 |
| 10104043514061 | 2014-05-01 09:03:12.324+01 | 2014-06 |
+-----------------+-----------------------------+--------------+
加载数据方式三:select查询方式insert/overwrite
CREATE TABLE order_created_4_partition (
orderNumber STRING
, event_time STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
load data local inpath '/home/spark/software/data/order_created.txt' overwrite into table order_created_4_partition; insert into table order_created_partition partition(event_month='2014-07') select * from order_created_4_partition;
insert overwrite table order_created_partition partition(event_month='2014-07') select * from order_created_4_partition;
对比:
insert overwrite table order_created_partition partition(event_month='2014-07') select ordernumber,event_time from order_created_4_partition;
insert overwrite table order_created_partition partition(event_month='2014-07') select event_time,ordernumber from order_created_4_partition;
发现字段值错位,在使用时一定要注意:字段值顺序要与表中字段顺序一致,名称可以不一致;
查看分区表已有的所有分区:
show partitions order_created_partition;
查看分区表已有的指定分区:
SHOW PARTITIONS order_created_partition PARTITION(event_month='2014-06');
查看表字段信息:
desc order_created_partition;
desc extended order_created_partition;
desc formatted order_created_partition;
desc formatted order_created_partition partition(event_month='2014-05');
二级分区表:
CREATE TABLE order_created_partition2 (
orderNumber STRING
, event_time STRING
)
PARTITIONED BY (event_month string, step string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
show partitions order_created_partition2;
显示结果空
load data local inpath '/home/spark/software/data/order_created.txt' into table order_created_partition2 partition(event_month='2014-09',step='');
show partitions order_created_partition2;
+-----------------------------+
| result |
+-----------------------------+
| event_month=2014-09/step=1 |
+-----------------------------+
insert overwrite table order_created_partition2 partition(event_month='2014-09',step='') select * from order_created_4_partition;
show partitions order_created_partition2;
+-----------------------------+
| result |
+-----------------------------+
| event_month=2014-09/step=1 |
| event_month=2014-09/step=2 |
+-----------------------------+
动态分区表
CREATE TABLE order_created_dynamic_partition (
orderNumber STRING
, event_time STRING
)
PARTITIONED BY (event_month string)
;
insert into table order_created_dynamic_partition PARTITION (event_month)
select orderNumber, event_time, substr(event_time, 1, 7) as event_month from order_created;
报错:
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
解决方案:
set hive.exec.dynamic.partition.mode=nonstrict;
重新执行:
insert into table order_created_dynamic_partition PARTITION (event_month)
select orderNumber, event_time, substr(event_time, 1, 7) as event_month from order_created;
select * from order_created_dynamic_partition;
+-----------------+-----------------------------+--------------+
| ordernumber | event_time | event_month |
+-----------------+-----------------------------+--------------+
| 10703007267488 | 2014-05-01 06:01:12.334+01 | 2014-05 |
| 10101043505096 | 2014-05-01 07:28:12.342+01 | 2014-05 |
| 10103043509747 | 2014-05-01 07:50:12.33+01 | 2014-05 |
| 10103043501575 | 2014-05-01 09:27:12.33+01 | 2014-05 |
| 10104043514061 | 2014-05-01 09:03:12.324+01 | 2014-05 |
+-----------------+-----------------------------+--------------+
Hive静态分区表&动态分区表的更多相关文章
- hadoop笔记之Hive的数据存储(分区表)
Hive的数据存储(分区表) Hive的数据存储(分区表) 分区表 Partition对应于数据库的Partition列的密集索引 在Hive中,表中的一个Partition对应于表下的一个目录,所有 ...
- Hive入门--2.分区表 外部分区表 关联查询
1.查看mysql中metastore数据存储结构 Metastore中只保存了表的描述信息(名字,列,类型,对应目录) 使用SQLYog连接itcast05 的mysql数据库 查看hive数据库 ...
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- 玩转SQL Server复制回路の变更数据类型、未分区表转为分区表
玩转SQL Server复制回路の变更数据类型.未分区表转为分区表 复制的应用: 初级应用:读写分离.数据库备份 高级应用:搬迁大型数据库(跨机房).变更数据类型.未分区表转为分区表 京东的复制专家 ...
- 生成lua的静态库.动态库.lua.exe和luac.exe
前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 "lua: attempt to yield across me ...
- Delphi DLL的创建、静态及动态调用
转载:http://blog.csdn.net/welcome000yy/article/details/7905463 结合这篇博客:http://www.cnblogs.com/xumenger/ ...
- 3D touch 静态、动态设置及进入APP的跳转方式
申明Quick Action有两种方式:静态和动态 静态是在info.plist文件中申明,动态则是在代码中注册,系统支持两者同时存在. -系统限制每个app最多显示4个快捷图标,包括静态和动态 静态 ...
- C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项
目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件 ...
- RT-Thread创建静态、动态线程
RT-Thread 实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性.稳定性.可剪裁性,当进行最小配置时,内核体积可以到 3k ROM 占用. 1k RAM 占用. RT-Thread ...
随机推荐
- bootstrapDialog插件集成datatables插件遇到的异常
最近项目中,涉及到很多细分领域的东西,有好些目前还没有详细的方案.这是后话,当前起步阶段,我要把握技术路线,搭建基础架构!其中,有好几个地方都用到模态框(Modal), 虽然Bootstrap框架里面 ...
- Debian 环境下安装Tomcat记录
1.安装JAVA运行环境 Debian默认带了OpenJDK,有人说不好用,我没有验证就从ORACLE官网上下载了最新的JDK安装包,直接解压并设置环境变量就行了: # tar zxvf jdk-8u ...
- .NET去掉HTML标记
using System.Text.RegularExpressions; /// <summary> /// 去除HTML标记 /// </summary> /// < ...
- oc-数据模型的建立
@{@"name":@"David Beckham",@"age":@38,@"gender":@"男&quo ...
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
文章转自:http://blog.sina.com.cn/s/blog_568e66230100hy6a.html FCKEditor于2009年被更名为新一代的CKEditor和CKFinder,见 ...
- Python基础教程【读书笔记】 - 2016/7/4
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第二波:第7章 更加抽象 [总览] 创建自己的对象,是Python的核心概念!Python被称为面向对象的语言.介绍如 ...
- .net下MD5算法和加盐
MD5方法: public static string GetMD5(string sDataIn) { MD5CryptoServiceProvider md5 ...
- Ajax方法执行跳转或者加载操作系统报出这样错误Sys.WebForms.PageRequestManagerParserErrorException:如何让解决
当你在代码中使用Response.Redirect(); 或者Response.Write();难免会遇到Sys.WebForms.PageRequestManagerParserErrorExce ...
- 一. JVM发展史,运行时数据区域,四大引用
一.JVM的出现 JVM将字节码解释成不同os下的机器指令,有了jvm,java语言在不同平台上运行时不需要重新编译 虚拟机发展史 (1)Sun Classic classic jvm要么采用纯解释器 ...
- NeHe OpenGL教程 第二十一课:线的游戏
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...