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 ...
随机推荐
- SVN-钩子祥解
钩子脚本的具体写法就是操作系统中shell脚本程序的写法,请根据自己SVN所在的操作系统和shell程序进行相应的写作 所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化属性的 ...
- Android之Button自定义点击效果
我们在界面上经常会用到button按钮,但通常button点击后看不到点击的效果,如果用户连续点击了两次,就会报NAR错误,这样交互性就比较差了.如果我们自定义了button点击效果,比如我们点击了b ...
- Discuz!NT 3.9.913 Beta DIY过程
前提: 论坛的源码版本为dnt_3.9.913_sqlserver_beta.zip,以下例子都以这个版本为原型修改 dnt_3.9.913数据字典:下载 目前(2013年10月21日)官网的asp. ...
- JavaScript中的继承模式总结
一.总结: //js中的几种继承 //原型链的问题,包含引用类型的原型属性会被实例共享,子类型无法给超类型传递参数 function SuperType() { this.colors = [&quo ...
- FastReport使用二——二维码
以下内容在FastReport Designer 中测试通过,如下图所示: 在使用FastReport Designer创建一维吗也就是一般普通的条码时,设置其Barcode属性为Code128 (建 ...
- postgresql数据库文件目录
不同的发行版位置不同 查看进程 ps auxw | grep postgres | grep -- -D 找到默认的目录 /usr/lib/postgresql/9.4/bin/postgres -D ...
- System.ArgumentOutOfRangeException: 年、月和日参数描述无法表示的 DateTime。
c#日期控件 格式设为 yyyy-MM,通过updown 方式调整日期. 当为月度最后一天,且要调整月没有当前月的最后一天时,就会报标题错误. 如:当前为1月31日,要调整为2月时,就会报错.因为2月 ...
- 55. Jump Game
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- Debug program crash with dump file.
1. Task manager, -> find the process for the program which crashed. 2. Right click the process -& ...
- [hibernate]基本值类型映射之日期类型
hibernate基本值类型映射中日期类型支持date,time,timestamp这三个选项,其中 date:对应数据库中的date类型,表示只显示日期 time:对应数据库中的time类型,表示只 ...