初学Hive数据仓库

初学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学习总结

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值