Hive简单介绍

学习慕课网《走近大数据之Hive入门》教程的笔记。
简单介绍了hive的安装,使用和基础知识。

1-1 概述

Hive是基于Hadoop之上的数据仓库(也是一种数据库)

1-2 数据仓库简介

数据仓库一般不更新,一直增大。

数据仓库的结构和建立过程:

Created with Raphaël 2.1.0数据源数据源数据存储及管理数据存储及管理数据仓库引擎数据仓库引擎前端展示前端展示业务数据系统文档资料其他数据抽取E(xtract)转换T(ransform)装载L(oad)各种服务器数据查询数据报表数据分析各类应用

OLTP:联机事务处理,例:银行转账。
OLAP:联机分析处理,例:商品推荐系统。
数据仓库的数据模型:1星型模型—-(发展出)–> 2雪花模型。

星型模型
是个搭建数据的基础模型,数据仓库是面向主题的数据库。最后构建出的模型就类似一个星星。在中间的就是其中的主题,外围的信息和它相关。
雪花模型
基于星型模型发展来的,以星型的各个顶点为不同的主题,进而扩展。

1-3 什么是Hive

Hive是建立在Hadoop HDFS上的数据仓库基础架构。可以使用ETL处理数据。

2-1 Hive的体系结构之元数据

Hive的元数据:Hive将元数据存在数据库中,如:mysql,derby(默认数据库)等。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性,表的数据所在的目录等。

2-2 Hive的体系结构之HQL的执行过程

HQL是在Hive中执行的。
解释器,编译器,优化器完成HQL查询语句从词法分析,语法分析,编译,优化以及查询计划(Plan)的生成。生成的查询计划存储在HDFS中,并在随后MapReduce调用执行。

Created with Raphaël 2.1.0StartHQL select解释器:进行词语分析,有语法错误就打印出来。编译器:生成HQL的执行计划。优化器:根据编译器生成的执行计划,进行调整生成最佳的执行计划。执行,得到结果。End

2-3 Hive的体系结构

这里有个图片,详细的请看此视频。

3-1 Hive的安装模式

安装模式:

  1. 嵌入模式:使用自带的derby数据库。仅用于演示。支持一个链接。
  2. 本地模式:使用其他的数据库,数据库和hadoop在同一台物理机器上。如mysql数据库。
  3. 远程模式:HIve和mysql运行在不用的物理机器上。支持多个链接。

3-2 Hive安装之嵌入模式

3-3 Hive安装之远程模式和本地模式

4-1 Hive的管理之CLI方式

Hive的启动方式:

  • CLI(命令行)方式
  • Web界面方式
  • 远程服务的启动方式
CLI:
直接输入hive可以进入命令行模式。

常用的CLI命令:

  • 清屏: C+L 或者 !clear
  • 查看数据仓库中的表:show tables;
  • 查看数据仓库中的内置函数:show functions;
  • 注释: –
  • 查看表结构:desc 表名;
  • 查看HDFS上的文件:dfs -ls 目录;
  • 使用linux的命令:!命令;
  • 执行HQL语句:select ××× from ×××;
  • 执行SQL的脚本:source SQL文件; (和sql的文件执行命令一致)
  • hive -S 进入静默模式。不会输出mapreduce的调试信息。

4-2 Hive的管理之web界面方式

默认使用的端口是:9999。
启动方式:#hive –service hwi &
通过浏览器访问:http://< IP地址>:9999/hwi/

这种方式只能进行查询操作。

4-3 Hive的管理之远程服务

hive远程服务启动方式:
端口号:10000
启动方式:#hive –service hiveservice &

5-1 Hive的数据类型之基本数据类型

基本数据类型:

  • tinyint/smallint/int/bigint:整数类型
  • float/double:浮点数类型
  • boolean:布尔类型
  • string:字符串类型

可以在Hive wiki里查看详细的内容。

varchar(20)表示最长为20, char(20)表示字符串如果不是20,也按照20个字符存。

5-2 Hive的数据类型之复杂数据类型

复杂数据类型:

  • Array:数组类型。
  • Map:集合类型。只是key-> value 只能存一个值。
  • Struct:结构类型。可以通过“点语法”的方式来访问其中的元素。

5-3 Hive的数据类型之时间数据类型

时间类型:

  • Date:从Hive0.12.0开始支持。只有年月日。
  • Timestamp:从Hive0.8.0开始支持。和时区无关,是一个偏移量。可能就是秒数。

6-1 Hive的数据存储

基于HDFS。
没有专门的数据存储格式。可以使用txt或者cvs等等。默认使用tab作为分割符。
存储结构主要包括:数据库、文件、表、视图
可以直接加载文本文件,如txt等。
创建表时,可以指定Hive数据的列分割符和行分割符。

表分类

  1. Table 内部表
  2. Partition 分区表
  3. External Table 外部表
  4. Bucket Table 桶表

视图:类似于表。

6-2 内部表

内部表

  1. 和数据库中的table类似。
  2. 每个table在Hive中都有一个对应的目录存储结构。
  3. 所有的table的数据(不包括External table)都保存在这个目录下。
  4. 删除表时,元数据和数据都会被删除。
    创建表时,可以指定位置location,或者指定分割符如row format。

6-3 分区表

分区表(Partition)

  1. Partition对应于数据库的Partition列的密集索引。
  2. 在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition数据都存储在对应的目录下。

在建立分区表时指定分区的条件,就是把数据库的数据按照什么原则来进行分类(放在不同的文件夹的文件里)。

6-4 外部表

外部表(External Table)

  1. 指向已经在HDFS存在的数据,可以创建Partition。
  2. 和内部表在元数据组织上相同,实际数据的存储有较大的差异。
  3. 外部表只是一个过程,创建表和加载数据同时完成。只是与外部数据建立一个连接,类似于快捷方式。

6-5 桶表

桶表:

  1. 是对数据进行哈希取值,然后放到不同文件中存储。

可以提高查询速度。

6-6 视图

视图:

  1. 是一中虚表,是一个逻辑概念,可以跨越多张表。
  2. 视图是建立在已有表的基础上,它所依赖的表称为基表。
  3. 视图可以简化查询操作。

7-1 总结

### Hive的基本信息和介绍 Hive是一个基于Hadoop数据仓库工具,主要用于处理和查询存储在HDFS上的大规模数据。通过将结构化的数据文件映射为数据库表,Hive提供了一种类SQL的查询功能,使得用户可以使用SQL语句来执行复杂的MapReduce任务,从而简化了大数据处理的过程[^1]。Hive的设计目标是支持大规模数据的离线分析处理(OLAP),而非实时事务处理(OLTP),因此它在处理历史数据和复杂查询方面表现出色。 ### Hive的功能 Hive的核心功能包括: - **类SQL查询语言**:HiveQL是一种类似于SQL的语言,支持常见的数据操作,如SELECT、JOIN、GROUP BY等,用户可以通过简单的SQL语法完成复杂的数据分析任务。 - **数据存储与管理**:Hive支持将结构化数据存储在HDFS中,并通过元数据管理工具(如Metastore)维护表结构和分区信息。 - **数据分区与分桶**:为了提高查询性能,Hive支持对数据进行分区(Partition)和分桶(Bucket),从而优化数据存储和查询效率。 - **支持多种文件格式**:Hive支持多种数据格式,包括文本文件(TextFile)、SequenceFile、ORC、Parquet等,适应不同的存储和计算需求。 - **UDF扩展机制**:Hive允许用户自定义函数(UDF、UDAF、UDTF),以满足特定的业务需求,增强数据分析的灵活性[^4]。 ### Hive的应用场景 Hive广泛应用于大数据平台中,尤其适用于以下场景: - **数据仓库建设**:Hive可以作为企业级数据仓库的核心组件,用于整合来自不同数据源的历史数据,并支持多维分析和报表生成。 - **离线数据分析**:由于其底层依赖于MapReduce或Tez等批处理引擎,Hive适合执行长时间运行的离线分析任务,例如日志分析、用户行为分析等。 - **ETL流程支持**:Hive常用于数据清洗、转换和加载(ETL)过程,能够高效处理海量数据的预处理和聚合操作。 - **数据归档与长期存储**:Hive支持将数据存储为外部表,结合HDFS的高可靠性特性,适用于数据归档和长期存储场景。 - **交互式查询(基于LLAP)**:在Hive 3.0及以上版本中引入了LLAP(Live Long and Process)功能,支持部分交互式查询能力,提升了查询响应速度[^3]。 ### Hive与传统数据库的区别 虽然Hive提供了类似SQL的查询语言,但其底层实现机制与传统关系型数据库存在显著差异。Hive并不支持事务处理(ACID),也不适合用于高并发的实时查询。它的设计更偏向于支持大规模数据的批量处理,底层依赖于MapReduce或Tez等分布式计算框架,因此查询延迟较高。相比之下,传统数据库(如MySQL、Oracle)更适合处理高并发、低延迟的在线事务处理(OLTP)任务[^5]。 ```sql -- 示例:HiveQL查询语句 SELECT user_id, COUNT(*) AS total_visits FROM user_visits WHERE visit_date >= '2023-01-01' GROUP BY user_id ORDER BY total_visits DESC LIMIT 10; ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值