Hive安装与使用

  Hive是用类似sql语句的形式去操作存储在HDFS上文件的一个客户端,功能上是一个数据仓库,需要配合一个关系型数据库使用,hive自带了一个关系型数据库derby,但是官方不推荐使用,这里我们使用Mysql。关系型数据库的作用是将HDFS上的数据结构化,将结构和数据映射对应起来。

  mysql用于存储映射关系,HDFS用来存储数据

一、安装mysql 

  略

二、Hive安装

 1) 解压Hive

tar -zxvf apache-hive-1.0.1-bin.tar.gz

 2) 生成hive-site.xml

cp hive-default.xml.template hive-site.xml

 3) 创建指定路径和用户名

  ① 创建指定路径,替换hive-site.xml中system:java.io.tmpdir的值

mkdir /home/whu/hadoop-hive/hive-1.0.1-bin/iotmp

    替换hive-site.xml中system:java.io.tmpdir的值

  ② 在上面文件夹下创建指定用户名文件夹

cd /home/whu/hadoop-hive/hive-1.0.1-bin/iotmp
mkdir whu

    替换hive-site.xml中system:user.name的值

 4) mysql中创建数据库

mysql -u root -p

  创建指定数据库

create database hive;

 5) 修改hive-site.xml

  ① 修改指定的关系型数据库

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive</value>
</property>

  ② 修改驱动

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
</property>

  ③ 修改连接数据库的用户名

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>    

  注:因为我的测试环境hive和mysql是装在一台机器,所以没有设置root进行远程登陆,如果mysql和hive不在一台机器,需要配置root或者其他用户进行远程登陆

grant all on *.* to root@'%' identified by 'root';

  ④ 修改连接数据库的密码

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
</property>

 6) 将mysql驱动拷贝到hive的lib目录

cp mysql-connector-java-5.1.34-bin.jar  /home/whu/soft/apache-hive/lib

  注:如果mysql驱动器版本不对,会导致删除表失败,所以放高版本的mysql驱动器更合适。

 7) 启动Hive

  先将hive添加到环境变量

export HADOOP_HOME=/home/whu/soft/apache-hive
export PATH=$HADOOP_HOME:bin

  使环境变量生效

source /etc/profile

  启动hive

hive

三、Hive简单使用

  1) 显示数据库

show databases;

  2) 显示数据表

use database;

show tables;

  3) 创建数据库

create database basename;

  4) 删除数据库

drop datbase basename;

  5) 创建表

create table tablename( colname coltype, ...)
row format delimited
fields terminated by '/001'
stored as textfile;

  6)删除表

drop table if exists tablename;

  7) 上传数据

load data local inpath 'path' into table tablename;

  8) 插入数据

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

 

posted @ 2015-12-17 11:27  丶大雄  阅读(172)  评论(0编辑  收藏  举报