之前主要研究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 ' ' collection items terminated by '