发布于 2015-12-26 04:56:01 | 197 次阅读 | 评论: 0 | 来源: PHPERZ
这里有新鲜出炉的Apache Hive教程,程序狗速度看过来!
Apache Hive 数据仓库工具
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低
试着安装了一下hive,在这里记录一下过程
大家都知道hive是用来简化map-reduce过程的,但是真正使用的时候却跟想象中有差距
单机版安装过程如下:
首先确保已经安装好了hadoop, hdfs可以正常使用
下载hive:http://apache.stu.edu.tw/hive/
确保下载的是安装包而不是源码包
然后解压安装包
配置环境变量/etc/profile:
export HIVE_HOME=/datapool/fengkai/hive/
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
配置hive-env.sh,添加hadoop_home:
HADOOP_HOME=/path/hadoop
配置hive-site.xml:
首先要在mysql数据库里面创建hive数据库, 用来存储hive的元数据
至于数据库是安装在本机还是其他机器是都可以的
然后配置相关的内容:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://mysqlhost:3306/hive</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>username</value>
<description>Username to use against metastore database</description>
</property>
这些都是在hive中需要对数据库进行的配置
其中还有一处需要处理,就是一些system path的处理
在默认的hive-site.xml的默认配置中有这样的配置:
<property>
<name>hive.exec.local.scratchdir</name>
<value>${system:java.io.tmpdir}/${system:user.name}</value>
<description>Local scratch space for Hive jobs</description>
</property>
这里的${system:java.io.tmpdir}/${system:user.name}是需要自己修改的,不然启动服务的时候会出错
都配好之后,直接运行hive就可以进入到hive的交互界面了
hive建表语句:
create table test (id int, name string) row format delimited fields terminated by ',' stored as textfile
跟数据库建表语句很像, 其中上面的语句中指出了导入文件的时候需要用','做间隔, 也可以指定其他间隔符
hive导入数据和查询:
lc.txt
1,hello
2,cxy
hive> load data local inpath '/localpath/lc.txt'
hive> select * from test;
OK
1 hello
2 cxy
可见就可以正常查询和统计了
最后写一点总结,其实hive在导入数据的时候也是需要先将数据结构化成指定的格式再导入
然后使用hive统计的时候能够看到hive是把语句转化成了map-reduce的语句格式使用的
使用hive确实能够方便统计的时候不用写mapreduce程序,不过还是需要一步预处理的过程