您的位置:首页 > 其它

初学Hive数据仓库

2017-03-04 20:58 190 查看

初学Hive数据仓库

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

数据仓库结构

- 数据源:业务数据系统、文档资料、其他数据

- 数据存储及管理:抽取、转换、装载

- 数据仓库引擎:服务器

- 前端展示:数据查询、数据报表、数据分析、各类应用

数据仓库中的数据模型:星型模型、雪花模型

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的目录/文件。

Hive的体系结构

- Hive的元数据:Hive将元数据存储在数据库中(metastore),支持mysql、derby等数据库。

- Hive中的元数据包括表的名字、表的列和分区及其属性,表的属性(是否为外部等),表的数据所在目录等。

- Hadoop:用HDFS进行存储,利用MapReduce进行计算;

- 元数据存储(MetaStore):通常是存储在关系数据库如mysql、derby中。

Hive的SQL执行过程

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

hadoop的安装:单机环境、伪分布环境、集群环境。

Hive的安装模式

- 嵌入模式、本地模式、远程模式。

- 嵌入模式:元数据信息被存储在Hive自带的Derby数据库中;只允许创建一个连接;多用于Demo。

- 本地模式:元数据信息被存储在MySQL数据库中;MySQL数据库与Hive运行在同一台物理机器上;多用于开发和测试。

- 远程模式:Hive的元信息存储在Mysql数据库中,而Hive和Mysql数据库运行不在同一台物理机器上;多用于实际的生产运行环境。

Hive的管理

- **Hive的启动方式:**CLI(命令行)方式;Web界面方式;远程服务启动方式。

- CLI(命令行方式):直接输入#/bin/hive的执行程序;或者输入#hive –service cli

- 常用的CLI命令:

1)清屏:Ctrl + L或者!clear

2)查看数据仓库中的表:show tables

3)查看数据仓库中内置的函数:show functions

4)查看表结构:desc 表名

5)查看HDFS上的文件:dfs -ls 目录

6)执行操作系统的命令:!命令

7)执行HQL语句:select *** from ***

8)执行HQL语句脚本:source *.sql

Hive的数据类型

- Hive - 数据仓库 - 数据库 : 创建表 - 列 - 类型

- 基本数据类型

1)tinyint/smallint/int/bigint:整数类型

2)float/double:浮点数类型

3)boolean:布尔类型

4)string:字符串类型

- 复杂数据类型

1)Array:数组类型,由一系列相同数据类型的元素组成

2)Map:集合类型,包含key-value键值对,可以通过可以来访问元素

3)Struct:结构类型,可以包含不同数据类型的元素。这些元素可以通过“点语法”的方式来得到所需要的元素

- 时间类型

1)Date:从Hive0.12.0开始支持

2)Timestamp:从Hive0.8.0开始支持

Hive的数据存储

- 基于HDFS进行存储

Hive的数据模型

- 内部表(Table):与数据库中的Table在概念上是类似;每一个Table在Hive中都有一个相应的目录存储数据;所有的Table数据(不包括External Table)都保存在这个目录中;删除表时,元数据与数据都会被删除。

- 分区表(Partition):Partition对应于数据库的Partition列的密集索引;在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存储在对应的目录中

- 外部表(External Table):指向已经在HDFS中存在的数据,可以创建Partition;它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异;外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。但删除一个外部表时,仅删除该链接。

- 桶表(Bucket Table):是对数据进行哈希取值,然后放到不同文件中存储。

- 视图(View):是一种虚表,是一个逻辑概念,可以跨越多张表;视图建立在已有表的基础上,视图赖以建立的这些表称为基表;视图可以简化复杂的查询。

参考文献:http://www.imooc.com/learn/387学习总结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息