概念
解决结构化的数据统计
hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供sql查询功能
Hive在大数据生态圈中位于数据计算层
可以增删查
不可改(具体数据)(可追加不可随机改) 因为基于hdfs
本质:将HQL转换成MapReduce程序
优缺点
Hive架构
Meta store:
元数据包含用Hive创建的database、table等的元信息。元数据存储在关系型数据库中。如Derby、MySQL等。
元数据:包括表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。
编译器(Physical Plan):将AST编译生成逻辑执行计划。
优化器(Query Optimizer):对逻辑执行计划进行优化。
执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark。
Hive安装
hive要将元数据存储在Derby或MySQL,推荐使用mysql
所以先要安装mysql
1.解压
tar -zxvf
2.进入conf 修改配置文件(有些包没有hive-site.xml 自己写一个也可以)
hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<!-- 存放数据的hdfs地址 -->
<value>/opt/module/hive-1.1.0-cdh5.14.2/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.56.20: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>root</value>
</property>
</configuration>
3.java连接mysqljar包放到lib
4.在hdfs中创建 写在配置文件中的目录“warehouse”
5.配置环境变量/etc/profile 配置完后source刷新
6.在mysql中创建hive元数据
schematool -initSchema -dbType mysql
7.启动hive
hive