安装
- 解压hive
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/ - 重命名
mv apache-hive-1.2.1-bin/ hive - 复制配置文件
cp hive-env.sh.template hive-env.sh - 修改配置文件
export HADOOP_HOME=/opt/module/hadoop-2.8.3
export HIVE_CONF_DIR=/opt/module/hive/conf - 配置环境变量
# HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin - 启动hdfs和yarn
start-dfs.sh
start-yarn.sh - 在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
基本操作
- 启动hive
hive - 查看数据库
show databases; - 打开默认数据库
use default; - 显示default数据库中的表
show tables; - 创建一张表
create table people(id int, name string); - 显示数据库中有几张表
show tables; - 查看表的结构
desc people; - 向表中插入数据
insert into people values(1,"ss"); - 查询表中数据
select * from people; - 退出hive
quit;
将本地文件导入hive操作
将本地/opt/module/datas/student.txt 这个文件的数据导入到hive的student(id int, name string)表中。
创建表
create table student(id int, name string) row format delimited fields terminated by '\t';
加载数据
load data local inpath '/opt/module/datas/student.txt' into table student;
查询数据
select * from student;
Hive元数据配置到MySql
遇到的问题
Hive的Metastore默认存储在自带的derby数据库中,所以当开多个客户端启动hive,会有异常,如下
Hive元数据配置到MySql
- 复制驱动到/opt/module/hibe/lib/
cp mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib/ - 在/opt/module/hive/conf目录下创建一个hive-site.xml
touch hive-site.xml - 复制下面内容到hive-site.xml中
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop-100:3306/metastore?createDatabase
IfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</descr
iption>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</descrip
tion>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</des
cription>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</des
cription>
</property>
</configuration>
- 打开多个客户端测试