1

试着安装了一下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程序,不过还是需要一步预处理的过程


dmlllll
47 声望6 粉丝