Hive学习笔记1

什么是Hive:

Hive是基于Hadoop之上的数据仓库,数据存放在HDFS上,它同样可以通过ETL来进行数据的抽取、转换和加载。同时Hive可以自己开发Mapreduce程序来完成本身不能提供的数据处理操作。Hive本身就是一个SQL的解析引擎,他将SQL 语句转成Mapreduce任务在hadoop之上执行。

什么是数据仓库:

数据仓库是一个面向主题的,集成的,不可更新的,随时间不变化的数据集合,它用于支持企业或组织的决策分析处理。

针对数据仓库的概念的解释:首先数据仓库中的数据是面向主题的,也就是这些数据的都是为了描述同一类事情,同时它的数据主要用于查询操作,不会对数据仓库中的数据进行删除和更新操作。

OLTP: 联机事务处理(面向的是事务,需要实时的更新操作,银行转账) OLAP: 联机分析处理(面向历史数据,进行数据的分析与挖掘,主要面向查询,不会做更新和插入数据,推荐系统)

注意:

在搭建数据仓库的过程最常用的两种模型就是:星型模型和雪花模型,雪花模型是在星型模型上发展出来的。什么是星型模型,比如一个商品的推荐系统,主题应该是商品,但是围绕商品的有客户信息、厂家信息、促销信息等很多信息,这样就组成了一个星型模型。但是客户信息中也存在客户的家庭的信息、地址信息等。这样再关联的话就是一个雪花模型了。

Hive的体系结构:

Hive将元数据存储在数据库中(metastore),这个数据库支持mysql、derby等数据库中。Hive默认是存储在derby数据库中。 Hive的元数据有哪些? 包括表的名字、表的列和分区及其属性,表的属性包括是否为外部表等,表的数据所在目录等。 首先Hive是基于Hadoop的,所以hive的数据会使用HDFS进行保存,同时hive的查询操作也是转化成hadoop的MapReduce操作,所以在hive中会存在一个Hive Driver:包括编译器、解析器和优化器。 在Hive的驱动之前有访问接口、jdbc以及WebConsole等方式进行操作。当然hive的元信息是存放在关系型数据库中的。 HQL的执行过程: 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后的Mapreduce调用执行。

Hive的安装:

Hive的官网地址: hive.apache.org apache 的历史工程发布页面在: archive.apache.org,在这个页面下可以找到hive工程。这里使用的是0.13版本。

Hive的安装之前需要先将hadoop安装好,hive有三种安装方式:嵌入模式、本地模式、远程模式。

嵌入模式:Hive将元信息存储在Hive自带的Derby数据库中。但是这种操作方式存在一些缺陷: 1. 只允许创建一个连接,也就是只允许一个用户操作hive 2. 多用于Demo

在安装hive之前需要先安装hadoop,然后把hive的压缩包解压,在bin目录下执行./hive进入hive的启动脚本,这种方式就是使用的嵌入式模式启动hive,会在当前目录下生成一个metastore_db的目录,这个就是元信息目录。

本地模式:Hive将元信息存储在mysql数据库中,mysql数据库与hive运行在同一台物理机上。这种方式可以允许多个用户操作hive,可以用于开发和测试。

远程模式:(推荐使用这种方式)hive将元信息存储在mysql数据库中,mysql数据库与hive运行在不同的物理机上。

元信息存储在远程的mysql中。进入远程mysql中,mysql -u … -p … , 进入后使用create database hive创建一个hive数据库来保存元数据。 在hive解压后,把mysql的驱动jar包上传到hive的lib目录中。这样hive才能操作mysql数据库。然后需要更改hive的配置文件。在conf中创建一个hive-site.xml文件,文件的内容如下:

当配置文件设置完后以后,就可以启动hive了。

Hive的管理

使用hive的脚本直接进入hive,或者 hive –service cli

cli常用的命令:

Web界面方式:

启动方式: #hive –service hwi & 在0.13.0中并没有包含web管理的war包,需要自己编译。

下载hive源码包,并且解压源码包,然后进入源码路径下的hwi目录,使用:jar cvfM0 hive-hwi-0.13.0.war -C web/ . 这样就会打成一个war包,把这个war包拷贝到hive的lib目录下,同时需要修改hive-site.xml 配置文件,这个修改可以在wiki上看到。

这个就可以使用hive –service hwi启动web服务了,但是在访问这个web应用的时候,浏览器还是报出了500的错误。这个问题需要拷贝jdk的tools.jar 拷贝到hive的lib目录下。

这个时候就可以打开这个web界面了。

hive的远程服务

启动hive的远程服务的命令如下: hive –service hiveserver & 如果要使用jdbc连接hive进行操作,这个时候就需要开启hive的远程服务。

Hive的数据类型

基本数据类型: tinyint/smallint/int/bigint 整数类型 float/double 浮点类型 boolean 布尔类型 string/varchar/char 字符串类型

复杂数据类型: array:数组类型,由一系列相同的数据类型的元素组成 map:集合类型,包含key->value键值对,可以通过key来访问元素。 struct:结构类型,可以包含不同数据类型的元素,这些元素可以通 过“点语法”的方式来得到所需要的元素。

Hive的数据存储

基于HDFS,没有专门的数据存储格式 Hive的数据模型:

表可以分成以下几种:

创建这张表的时候就是以gender进行分区 分区表能够加快查询效率

    原文作者:三万_chenbing
    原文地址: https://www.jianshu.com/p/bad25d4f72f8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞