hive特性:
数据存储在hdfs上,依托hadoop集群实现并行计算
采用hiveQL作为查询语言,与SQL极其相似
Hive中存储的数据无固定格式要求,可随用户自定义
可追加数据,但不支持更改
可扩展性强,支持大规模并行计算
hive安装
请确保 hadoop集群处在运行状态
当前用户环境变量中有HADOOP_HOME,如果不设置,hive没法运行
$cd /opt/soft
$wget http://apache.etoak.com/hive/hive-0.7.0/hive-0.7.0-bin.tar.gz
$tar -zxvf hive-0.7.0-bin.tar.gz
$mv hive-0.7.0 hive
$cd hive/conf
$cp hive-default.xml hive-site.xml
$cd ../bin
$./hive 启动hive进入命令行
操作指南
可见官网文档:https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-SQLOperations
Hive提供了很多的函数,可以在命令行下show functions罗列所有的函数
你会发现这些函数名与mysql的很相近,绝大多数相同的,
可通过describe function functionName 查看函数使用方法
hive支持的数据类型很简单就int,string等原子类型, 连日期时间类型也不支持,
但通过to_date unix_timestamp date_diff date_add date_sub等函数就能完成mysql同样的时间日期复杂操作
分区
hive与mysql分区有些区别,mysql分区是用表结构中的字段来分区(range,list,hash等),而hive不同,他需要手工指定分区列,这个列是独立于表结构,但属于表中一列,在加载数据时手动指定分区
试用:
create table mytest(id int,name string ,regtime string) PARTITIONED by (ds string) row format delimited fields terminated by ‘\t’ stored as textfile ;
创建一个数据文件
1 sawenlee 2011-07-28 22:23:12
2 tonylee 2011-08-03 22:24:21
3 nick 2011-08-02 6:2:43
执行
LOAD DATA LOCAL INPATH ‘../data/test.txt’ OVERWRITE INTO TABLE mytest PARTITION (ds=’2011-08-02′);
LOAD DATA LOCAL INPATH ‘../data/test.txt’ OVERWRITE INTO TABLE mytest PARTITION (ds=’2011-08-03′);
再看hive文件结构

如果执行一个查询,hive会将其转换成map reduce在hadoop上执行(select * from mytest除外)
select * from mytest where to_date(regtime) >to_date(’2011-8-1′);








