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 [email protected]‘%‘ 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-hiveexport 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;