Hive分布式数据仓库(大数据)

 
数据仓库
  • 数据仓库是一个面向主题的(Subject Oriented),集成的(Integrated),相对稳定的(Non-Volatile)以及反映历史变化的(Time Variant)数据集合,用于支持管理决策。
  • 面向主题:数据仓库会围绕一些主题来组织和构建。
  • 集成:指构建数据仓库通常会将多个异构的数据源。
  • 相对稳定:数据仓库大多会分开存储数据,数据仓库不需要进行事务处理,数据恢复和并发控制等。
  • 反映历史变化:数据仓库是从历史的角度提供信息的。
 
数据仓库和数据库的区别
  • 数据库的操作
  1. 联机事务处理(OLTP)
  2. OLTP面向一般的客户,关注企业的当前数据,主要用于存储和管理日常运营的数据。
  3. OLTP的访问模式由短的原子事务组成,同时需要考虑事务管理,并发控制和故障恢复。
 
  • 数据仓库的操作
  1. 联机分析处理(OLAP)
  2. OLAP面向的是管理决策人员,提供数据分析的功能。
  3. 数据仓库与OLAP的关系是互补的。

 

 

 
数据仓库的系统结构
  • 数据源
  • 数据存储和管理
  • 数据服务
  • 数据应用

 

 

 
Hive概述和体系结构
Hive简介
  • Hive是基于Hadoop的数据仓库软件,可以查询和管理pb级别的分布式数据。
  • Hive特性:
  1. 灵活方便的ETL(extract/transform/load)
  2. 支持Tez,spark等多种计算引擎
  3. 可直接访问HDFS文件以及HBase
  4. 易用易编程
 
Hive应用场景

 

 

 
Hive体系结构
  • Hive命令行界面(Command-Line Lnterface,CLI)
  • THrift提供Hive远程访问,支持JDBC和ODBC
  • 元数据服务
  • Hive默认的执行引擎是MapReduce
  • Hive Web界面

 

 

 
华为Hive架构
  • 引入了WebHCat组件。
  • WebHCat对外提供REST接口,使用户可以通过超文本传输安全协议(Hyper Text Transfer Protocol Secure, HTTPS)使用元数据访问,数据定义语言(Data Defination Language,DDL)查询等服务。

 

 

 
Hive与传统数据仓库比较(1)

 

 

Hive与传统数据仓库比较(2)

 

 

 
Hive优点

 

 

 
Hive缺点

 

 

 
Hive数据存储模型

 

 

 
Hive分区和分桶
  • 分区:数据表可以按照某给字段的值划分分区。
  1. 每个分区是一个目录。
  2. 分区数量不固定。
  3. 分区下可再有分区或者桶。
  • 桶:数据可以根据桶的方式将不同数据放入不同的桶中。
  1. 每个桶是一个文件。
  2. 建表时指定桶个数,桶内可排序。
  3. 数据按照某个字段的值Hash后放入某个桶中。
 
Hive基本操作
Hive数据基本操作(1)

 

 

 
Hive数据基本操作(2)

 

 

 
Hive SQL介绍
  • DDL-数据定义的语言
  1. 建表,修改修,删表,分区,数据类型
  • DML-数据管理语言
  1. 数据导入,数据导出
  • DQL-数据查询语言
  1. 简单查询
  2. 父子查询Group by,Order by,Join等
 
DDL操作(1)
  • 创建数据库
  1. create database|schema [if not exists] <database name>
  • 删除数据库
  1. drop (database|schema)[if exists] database_name [restrict|cascade]
 
DDL操作(2)
  • 创建表
create [temporary] [external] table [if not exists] [db_name.] table_name
[(col_name data_type [comment col_comment] ,...)]
[comment table_comment] [row format row_format]
[stored as file_format]
like table_name1
[location hdfs_path]
  • 描述表
describe [tablename]
 
DDL操作(3)
  • 浏览表
show tables
  • 修改表
alter table [firest_table] rename to [second_table]
  • 增加删除列
alter table table_name add|replace columns (col_name data_type [comment col_comment])
 
DML操作
  • 向表里加载数据
load data [local] inpath 'filepath'
[overwrite] info table tablename
[paetition (partcol1=val1,partcol2=val2)]
  • 导出数据到
export table tablename to '/department'
 
DQL操作(1)
  • select基本语句
select [all | distinct] select_expr,select_expr,....
from table_reference
[where where_condition]
[group by col_list[having condition]]
[cluster by col_list| [distribute by col_list]] [sort by| order by col_list]
[limit number]
 
DQL操作(2)
  • JOIN基本语句
table_reference join table_factor [join_condition]
| table_reference {left|right|full} [outer] join table_reference join_condition
| table_reference left semi join table_reference join_condition
| table_reference cross join table_reference [join_condition] (as of Hive 0.10)
 
DQL操作(3)
  • Map端JOIN
  1. 大的表通过mapper的时候将小标映射到内存中,这样join操作可以被转换伟只有一个任务,无法启动reduce
  2. 提高join效率
  3. hive>select /*+mapjoin(samlltable)*/ .key,value
>from smalltable
>join bigtable
>on smalltable.key = bigtable.key
 
Hive支持的函数
  • Hive内置函数
  1. 数学函数:如round(),floor(),abs(),rand()等
  2. 日期函数:如to_date(),mouth(),day()等
  3. 字符串函数:如trim(),length(),substr()等
  • UDF (user - defined funcation)
 
Hive数据压缩与文件存储格式
  • Hive数据压缩
  1. gzip
  2. bzip2
  3. lzo
  4. snappy
 
  • Hive文件存储格式
  1. textfile
  2. sequencefile
  3. rcfile
  4. orcfile
  5. parquet
posted @ 2022-07-28 08:45  十一没有撤退可言!  阅读(312)  评论(0编辑  收藏  举报