<官网学大数据>Hive
2020-03-15 本文已影响0人
kangapp
Hive简介
- Hive是简历在Hadoop HDFS上的数据仓库基础架构
- Hive可以用来进行数据提取转化加载(ETL),通过sqoop加载数据
- Hive定义了简单的sql查询语言Hql
- Hive是SQL解析引擎,将sql语句转换成M/R Job在Hadoop执行
- Hive的表其实就是HDFS文件和目录
Hive的体系结构
- Hive的元数据
- hive将元数据存储在数据库中(metastore),支持mysql、derby等数据库
- Hive中的元数据包括表的名字,表的列和分区及其属性(是否为外部表等),表的数据所在的目录等
Hive管理方式
- CLI方式
常用CLI命令
- 查看表结构
desc 表名 - 执行HDFS命令
dfs 命令 - 执行操作系统的命令
! 命令 - 执行HQL语句
select *** from xxx
-执行SQL的脚本
source SQL文件 - hive 参数
- 查看表结构
- web界面方式
- 启动方式
hive --service hwi
通过浏览器访问9999端口 - 如果启动失败需编译源码包
下载源码包:
wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0- cdh5.7.0-src.tar.gz
打war包:jar cvfM0 hive-hwi-1.1.0.war -C web/ .
把打好的包放在hive lib目录下
hive-site.xml 添加配置
https://cwiki.apache.org/confluence/display/Hive/HiveWebInterface#HiveWebInterface-FeaturesofHWI
- 启动方式
环境搭建
- 安装包下载 http://archive.cloudera.com/cdh5/cdh/5/
wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz - 解压文件到指定目录
- 配置
环境变量
export HIVE_HOME=/home/kang/app/hive-1.1.0-cdh5.7.0
export PATH=$PATH:$HIVE_HOME/bin
安装和配置mysql
hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost: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>123456</value>
</property>
<property>
<name>hive.hwi.listen.host</name>
<value>0.0.0.0</value>
<description>This is the host address the Hive Web Interface will listen on</description>
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
<description>This is the port the Hive Web Interface will listen on</description>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-1.1.0.war</value>
<description>This is the WAR file with the jsp content for Hive Web Interface</description>
</property>
</configuration>
hive-env.sh
export HADOOP_HOME=/home/kang/app/hadoop-2.6.0-cdh5.7.0
export HIVE_CONF_DIR=/home/kang/app/hive-1.1.0-cdh5.7.0/conf
Hive的数据类型
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types
-
基本数据类型
基本数据类型 -
复杂数据类型
复杂数据类型 -
时间类型
时间类型
Hive的数据模型
-
内部表
内部表
实例 -
分区表
分区表
创建分区表 -
外部表
外部表
Hive数据的导入
-
使用load语句
load - 使用sqoop
Hive的数据查询
-
简单查询
查询所有表信息不执行MapReduce作业
支持算术表达式
若值为null,表达式则为null,可用函数nvl(列字段,null转换的值)
null值查询不能使用=连接,用is连接
查询语法 -
Fetch Task(简单查询不启动MapReduce作业)
配置方式
前两种只在当前session生效
<name>hive.fetch.task.conversion</name>
<value>more</value>
-
使用排序
根据第几列排序
null排序升序排在前面
- Hive的函数
数学函数
round() ---------------- 四舍五入
。。。