Hive 外部表 分区表
之前主要研究oracle与mysql,认为hive事实上就是一种数据仓库的框架,也没有太多另类,所以主要精力都在研究hadoop。hbase,sqoop,mahout,近期略微用心看了下hive。事实上hive还是比我想象中好用的多,心里有点点暗爽,不论是与hadoop的衔接,还是在对外查询分析,定期hsql生成报表方面,都很方便。能够不用mapreduce。直接用hive生成报表。 真是方便。
Hive 提供两者表的两种使用方式,一种是内部表(托管表),第二种就是外部表。
对于两种表的使用场景,最基本的差别就是在于数据的存储位置,假设你没有仅仅是使用hive来调用者部分数据,那索性就用内部表。假设还有其它任务共享这批数据的话。那就用外部表,眼下我就是这么来做划分。 但我更倾向于使用外部表,由于我更在意一种特性就是灵活的拓展性! 外部表能够使用以后可能发生的数据使用上的变更。我一般都使用外部表方式。
外部表的分区:
下面就一个简单的案例来说一下外部表假设进行分区使用:
先上一下数据样本:
渠道 区服 角色名 唯一标识 等级 国家 vip等级 UID 注冊时间 最后登录时间 剩余充值金币 剩余系统金币 充值金消耗 系统金消耗 粮食消耗 镔铁消耗 银币消耗 点券剩余数量 日期
178 XXX_260 凯旋 178_263_1809 33 3 0 34191904 2014-12-05 15:33:23 2014-12-05 17:18:58225 0 0 0 0 0 0 2015-06-07
178 XXX_262 凯旋 178_264_801 33 2 0 34191904 2014-12-06 12:13:03 2014-12-06 14:12:51237 0 0 0 0 0 0 2015-06-07
178 XXX_274 【痴货】 178_276_2131 11 1 0 34308396 2014-12-18 15:39:34 2014-12-18 21:28:38 0 100 0 0 0 0 0 0 2015-06-07
178 XXX_286 七雨1 178_288_859 23 2 0 34016769 2014-12-30 12:46:18 2014-12-30 19:27:21100 0 0 0 0 0 0 2015-06-07
178 XXX_323 丿无极灬南蕾 178_324_1780 29 2 0 34645311 2015-02-04 13:42:59 2015-02-04 20:18:12 0 120 0 0 0 0 0 0 2015-06-07 创建数据库:
create database gcld;
use gcld; 创建分区外部表(依照天进行分区):
create external table gcldlog(coopid string,zoneid string,rolename string,uniquecode string,level string,country string,viplevel string,uid string,regdate string,lastlogintime string,remain_reg_coin bigint,remain_sys_coin bigint,cost_reg_coin bigint,cost_sys_coin bigint,cost_food bigint,cost_iron bigint,cost_silvercoin bigint,remain_coupon bigint,datetime string) partitioned by (dt string)
row format delimited
fields terminated by '\t'
collection items terminated by '\002' map keys terminated by '\003'
lines terminated by '\n' stored as textfile
location '/source/gcld/'; 给外部分区表添加分区:
alter table gcldlog add partition (dt='2015-06-07') location '2015-06-07';
alter table gcldlog add partition (dt='2015-06-08') location '2015-06-08';
alter table gcldlog add partition (dt='2015-06-09') location '2015-06-09'; 往HDFS上传数据,hdfs文件夹结构应该例如以下:
/source/gcld/2015-06-07/xxx.log
/source/gcld/2015-06-08/xxx.log
/source/gcld/2015-06-09/xxx.log 创建分区相应的hdfs文件夹:
hadoop fs -mkdir -p /source/gcld/2015-06-07
hadoop fs -mkdir -p /source/gcld/2015-06-08
hadoop fs -mkdir -p /source/gcld/2015-06-09
将文件上传至hdfs文件夹:
hadoop fs -put local_log_dir/2015-06-07.log /source/gcld/2015-06-07/
hadoop fs -put local_log_dir/2015-06-08.log /source/gcld/2015-06-08/
hadoop fs -put local_log_dir/2015-06-09.log /source/gcld/2015-06-09/ 数据查询(使用分区方式查询):
Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j.properties
hive> show databases;
OK
default
gcld
opensdkdb
tmp
Time taken: 1.754 seconds, Fetched: 4 row(s)
hive> use gcld;
OK
Time taken: 0.126 seconds
hive> show tables;
OK
gcldlog
Time taken: 0.114 seconds, Fetched: 1 row(s)
hive> select * from gcldlog t where t.dt='2015-06-08' limit 10;
OK
07073sy xxxx_220 叛逆者 07073sy_228_25641 37 3 0 140958 2015-04-30 09:08:54 2015-05-19 19:27:30590 0 0 0 0 0 0 2015-06-08 2015-06-08
07073sy xxxx_268 平台推广 07073sy_268_7017 18 1 0 13480 2014-12-27 16:38:51 2014-12-29 11:48:21 0 85 0 0 0 0 0 0 2015-06-08 2015-06-08</span>
07073sy xxxx_274 帝一 07073sy_276_147 6 2 0 6037 2014-12-18 10:59:35 2014-12-18 10:59:35 0 150 0 0 0 0 0 0 2015-06-08 2015-06-08</span>
07073sy xxxx_274 ? 青春℡ 07073sy_276_7459 22 2 0 10297 2014-12-19 09:01:54 2014-12-19 11:44:40100 0 0 0 0 0 0 2015-06-08 2015-06-08
07073sy xxxx_274 将军 07073sy_276_8065 2 2 0 11287 2014-12-19 20:01:06 2014-12-19 20:01:06100 0 0 0 0 0 0 2015-06-08 2015-06-08
07073sy xxxx_275 苏小梵丶 07073sy_277_226 18 2 0 10808 2014-12-19 11:07:14 2014-12-19 11:07:14100 0 0 0 0 0 0 2015-06-08 2015-06-08
07073sy xxxx_275 宁小之 07073sy_277_571 6 3 0 11132 2014-12-19 11:48:46 2014-12-19 11:48:46 0 150 0 0 0 0 0 0 2015-06-08 2015-06-08
07073sy xxxx_278 阿杰 07073sy_278_7297 36 1 1 11885 2014-12-21 01:54:01 2014-12-21 11:57:222015-06-08 2015-06-08
07073sy xxxx_273 恩恩额 07073sy_279_2403 18 3 0 12094 2014-12-21 15:21:43 2014-12-22 17:50:17100 0 0 0 0 0 0 2015-06-08 2015-06-08
07073sy xxxx_273 诸葛,无敌 07073sy_279_3152 9 1 0 12137 2014-12-21 17:00:53 2014-12-21 19:09:52 0 150 0 0 0 0 0 0 2015-06-08 2015-06-08
Time taken: 2.428 seconds, Fetched: 10 row(s)
Hive 外部表 分区表的更多相关文章
- HIVE外部表 分区表
		
HIVE外部表 分区表 外部表 创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE. 在真实开发中,很可能在hdfs中已经有了数据,希望通过hi ...
 - Hive 外部表的练习(多表关联查询,以及分组,子查询)
		
Hive 外部表的练习 hive创建库和表操作 hive加载数据,4种发放 1.数据放在Linux创建表结构 进行加载 2.先定义表结构.将一个查询select语句结果插入到表中 3.数据先放在hdf ...
 - hive外部表删除遇到的一个坑
		
hive外部表删除遇到的一个坑 操作步骤 创建某个表(create external table xxx location xxx) 插入数据(insert xxx select xxx from x ...
 - hive外部表的建立与数据匹配
		
1.建立hive的外部表匹配hdfs上的数据 出现如下报错: hive (solar)> ; OK Failed with exception java.io.IOException:java. ...
 - Hive 外部表新增字段或者修改字段类型等不生效
		
标题比较笼统,实际情况是: 对于Hive 的分区外部表的已有分区,在对表新增或者修改字段后,相关分区不生效. 原因是:表元数据虽然修改成功,但是分区也会对应列的元数据,这个地方不会随表的元数据修改而修 ...
 - hive 外部表和内部表的区别和相互转换
		
Hive内部表和外部表区别 1.创建内部表时,内部表的数据文件是保存在指定的路径的:如若创建外部表,则只记录数据所在的路径,不会对数据位置做改变. 2.删除表的时候,内部表元数据和数据会跟着一起删除. ...
 - hive -- 外部表、内部表、临时表
		
1.外部表 关键字:EXTERNAL 外部表创建时需要指定LOCATION 删除外部表时,数据不被删除 CREATE EXTERNAL TABLE page_view(viewTime INT, us ...
 - hive外部表
		
创建外部表.数据从HDFS获取 只是建立了链接,hdfs中的数据丢失,表中数据也丢失;hdfs数据增加,表中数据也增加 上传文件 创建外部表 删除文件 执行查询语句,发现少了
 - hive学习笔记之三:内部表和外部表
		
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
 
随机推荐
- python--触发器, 储存过程, 事务
			
一. 触发器 使用触发器可以定制用户对某一张表的数据进行 [增, 删 ,改] 操作时前后的行为, (注意 没有查询),在进行增删改的时候出发的某个动作叫做 触发器. 其实就是在增删改的时候另外执行了 ...
 - Python9-集合-day7
			
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的. 以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. 关系测试 ...
 - BZOJ 1587: 叶子合并leaves
			
题目大意:求n个数分成k段的最小代价. 题解:DP,没什么好说的. 代码: #include<cstdio> #include<algorithm> using namespa ...
 - window.close()
			
1.frame不能脱离frameSet单独使用,iframe可以: 2.frame不能放在body中:如下可以正常显示: <!--<body>--> <frameset ...
 - Action的实现方式
			
[Pojo方式] 1.概述 Pojo(Plain Ordinary Java Object)称为简单Java类,其实就是一个JavaBean. 2.示例 /** * Pojo类方式实现Action * ...
 - Window Phone 8手电筒
			
一直想开发一个Wp8的手电筒程序,看了好多别人开发的基本上有以下问题: 1.锁屏闪光灯关闭了 2.闪光灯不停的闪烁. 我就想开发一个锁屏也能用的手电筒,发现找资料那是相当的困难.找到的代码基本都不能令 ...
 - 九度oj 题目1086:最小花费
			
题目描述: 在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下: 距离s 票价 0<S<=L1 ...
 - 03-offsetParent属性
			
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
 - Python之回调函数
			
在计算机程序设计中,回调函数,或简称回调(Callback),是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 有两种类型的回调函数:即bloc ...
 - 【bzoj4804】欧拉心算  欧拉函数
			
题目描述 给出一个数字N 输入 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10^7 输出 按读入顺序输出答案. 样例输入 1 1 ...