1、什么是hive
- hive 是建立在Hadoop HDFS上的数据仓库基础架构
- Hive可以用来进行数据提取转化加载(ETL)
- Hive定义了简单的类似SQL查询语言,称为HQL它允许熟悉SQL的用户查询数据
- hive允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作
- Hive是SQL解析引擎,他将SQL语句转移成M/R Job然后在Hadoop执行
- Hive的表其实就是HDFS的目录/文件
2、Hive的体系结构
- Hive的元数据
- hive将元数据存储在数据库中,支持mysql、derby、Oracle等数据库默认是derby
- hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
- 一条HQL语句如何在hive中进行查询
HQL的执行过程
解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
- 一条HQL语句如何在hive中进行查询
3、hive的安装
- 嵌入模式
- 本地模式
- 远程模式
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://127.0.0.1:3306/你的数据库名称?characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>Mysql用户名</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql用户密码</value>
</property>
</configuration>
然后hive就可启动了,注意在操作hive的时候一定要先启动Hadoop4、Hive的管理
hive的启动方式
- 清屏: Ctrl+L或者 !clear
- 查看数据仓库中的表 -show tables;
- 查看数据仓库中内置的函数 -show functions;
- 查看表结构 -desc表名
- 查看HDFS上的文件 -dfs -ls目录
- 执行操作系统的命令 -!命令
- 执行HQL语句 -select ***from***
- 执行SQL的脚本 -source SQL文件
<property>
<name>hive.hwi.listen.host</name>
<value>0.0.0.0</value>(如果是本地就是0.0.0.0远程配置远程Ip)
</property>
<property>
<name>hive.hwi.listen.port</name>
<value>9999</value>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>/lib/hive-hwi-0.13.0.war</value>
</property>
然后在命令行中执行:
hive --service hwi命令即可
在浏览器上打开
localhost:9999/hwi/即可看到如下界面
注意在web上只能做查询操作
hive远程服务
远程服务启动方式
-端口号10000
-启动方式:#hive --service hiveserver &
注意:以JDBC或ODBC的程序登陆到hive中操作数据时,必须选用远程服务启动方式
5、hive的基本数据类型
基本数据类型
复杂数据类型
时间数据类型
6、hive的数据存储
- 基于HDFS
- 没有专门的数据存储格式
- 存储结构主要包括:数据库、文件、表、视图
- 可以直接加载文本文件(.txt文件等)
- 创建表时,指定hive数据的列分隔符与行分隔符