Hive原理
- 1、Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
- 2、Hvie是建立在Hadoop上的数据仓库基础架构。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语句,称为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。
- 3、由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述Hive和数据库的差异。数据库可以用在Online的应用中,但是Hive是为数据仓库而设计的,清楚这一点,有助于从应用角度理解Hive的特性。
Hive安装步骤
- 1、前置安装hadoop 以及 zookeeper
- 2、安装mysql数据库
- 3、安装hive,解压压缩包至/opt/目录下,并重命名为hive
cd /software
tar -zxvf hive-1.1.0-cdh5.14.2.tar.gz -C /opt/
cd /opt/
mv hive-1.1.0-cdh5.14.2.tar.gz hive
- 4、在/opt/hive目录下创建warehouse
cd /opt/hive
mkdir warehouse
- 5、配置etc/profile并运行
export HIVE_HOME=/opt/hive
export PATH=….:$HIVE_HOME/bin
#运行/etc/profile配置文件
source /etc/profile
- 6、重命名/opt/hive/conf/目录下hive-env.sh.template文件为hive-env.sh,并修改其内容
cd /opt/hive/conf/
#重命名
mv hive-env.sh.template hive-env.sh
#修改配置
vi hive-env.sh
export HIVE_CONF_DIR=/opt/hive/conf
export HIVE_AUX_JARS_PATH=/opt/hive/lib
- 7、配置hive-site.xml文件
vi hive-site.xml
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</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>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>ok</value>
</property>
</configuration>
- 8、在/opt/hive/lib目录下导入mysql-connector-java-5.1.38.jar包
cd /opt/hive/lib
- 9、启动mysql
#启动MySQL
service mysql start
#进入MySQL库
mysql -uroot -pok
- 10、创建hive数据库
#创建hive库
create database hive;
#退出
quit;
- 11 、 执行schematool -dbType mysql -initSchema命令,如果出现报错情况,则重新启动mysql,进入mysql库,删除hive库,再重新创建hive库,退出后再次执行schematool -dbType mysql -initSchema命令。
schematool -dbType mysql -initSchema
#出现报错情况,执行如下处理步骤:
service mysql restart
mysql -uroot -pok
drop database hive;
create database hive;
quit;
schematool -dbType mysql -initSchema
#schematool -dbType mysql -initSchema命令执行成功后,执行hive命令
hive
-
- 11.1 创建表aaa和表bbb
#创建aaa表
create table aaa(aname varchar(10));
#aaa表插入数据
insert into aaa values('test'),('test2');
#查询aaa表中数据
select * from aaa;
#创建bbb表
create table bbb(bid int,bname varchar(50),gender varchar(10));
#bbb表插入数据
insert into bbb values(1,'abc','male'),(2,'def','female');
-
- 11.2 查询表aaa和表bbb数据
cd warehouse/
#查看aaa表数据
hdfs dfs -cat /opt/hive/warehouse/aaa/000000_0
#查看bbb表数据
hdfs dfs -cat /opt/hive/warehouse/bbb/000000_0