基本概念
Hive是基于hadoop的一个数据仓库工具,是一种编程接口,处理结构化数据,将结构化的数据文件映射成表,并提供类SQL查询功能。
本质:将HQL转化为MR程序。
优缺点:
优点:采用类SQL语法,易上手;避免写MR程序,减少学习成本;吞吐量大;支持用户自定义函数
缺点:表达能力有限(受限于MR编程模型);调优困难,粒度较粗
Hive架构原理
Hive安装及配置
Hive的安装很简单,解压安装包即可。
Hive需要修改的配置:
hive-env.sh文件
export HADOOP_HOME=/usr/local/src/hadoop-2.10.0export HIVE_CONF_DIR=/usr/local/src/hive-2.3.6/conf
Hive默认使用第三方的Derby数据库存储元数据,也可以使用MySQL代替Derby。
通过执行bin/hive进去hive的交互式界面,hive的语法和常规的数据库语法非常类似。
使用MySQL替换Derby
直接下载rpm包安装,然后配置hive的配置文件hive-site.xml
<property> <name>javax.jdo.option.ConnectionURLname> <value>jdbc:mysql://hdp-master1:3306/hive?createDatabaseIfNotExist=truevalue> <description>JDBC connect string for a JDBC metastoredescription> property> <property> <name>javax.jdo.option.ConnectionDriverNamename> <value>com.mysql.cj.jdbc.Drivervalue> <description>Driver class name for a JDBC metastoredescription> property> <property> <name>javax.jdo.option.ConnectionUserNamename> <value>rootvalue> <description>username to use against metastore databasedescription> property> <property> <name>javax.jdo.option.ConnectionPasswordname> <value>rootvalue> <description>password to use against metastore databasedescription> property>
执行./schematool -initSchema -dbType mysql初始化。
Hive常用交互命令
1、-e 不进入hive的交互窗口执行sql语句
bin/hive -e “select * from stu;”
2、-f 以文件作为参数,执行文件内的sql语句
bin/hive -f ./hive.sql
3、将结果输出到文件中。
bin/hive -f ./hive.sql > /home/hadoop/hive_result.txt