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 ...
随机推荐
- 淘宝PHPSDK2.0 剔除 lotusphp框架---兄弟连教程
淘宝PHPSDK2.0 剔除 lotusphp框架---兄弟连教程. lotusphp是一个国产开源的php框架 由于有个朋友公司是做淘宝客的,还由于不少朋友在开淘宝,于是有必要研究下.尽管个人认为微 ...
- 08socket编程
有个SO_REUSEADDR值得注意一下: 服务器端尽可能使用SO_REUSEADDR 在绑定之前尽可能调用setsockopt来设置SO_REUSEADDR套接字选项. 使用SO_REUSEADDR ...
- 【jmeter】元件的作用域与执行顺序
1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...
- LintCode "Triangle Count"
Should be "Medium" or even "Easy".. Just with a little Greedy. class Solution { ...
- AppCan做的图片上传代码
存在AppCan里的网页 index.html <!DOCTYPE html> <html class="um landscape min-width-240px min- ...
- 【centos7】设置开机自启动服务--systemd
centos7使用systemd管理开机自启动服务,不提倡rc.local. 假设现在有2个服务,分别为: my111: my222: 希望在开机时自动启动my222服务,但是my222启动需要my1 ...
- update openssl on redhat/centos
$ openssl versionOpenSSL 1.0.1e-fips 11 Feb 2013 $ yum list |grep opensslopenssl.x86_64 1.0.1e-16.el ...
- Access数据库连接方式
网络连接:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\server\share\folder\myAccessFile.accdb;标准安全:Pro ...
- [内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
转自:http://blog.csdn.net/wh_19910525/article/details/11536279 自旋锁的初衷:在短期间内进行轻量级的锁定.一个被争用的自旋锁使得请求它的线程在 ...
- mongodb3.03开启认证
原文地址:http://21jhf.iteye.com/blog/2216103 下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如 ...