mysql 热块_Hive基础知识整理(1)

一、数据仓库

数据仓库是一个面向主题的(有特定需求)、集成的(来自多个源)、不可更新的(只做查询操作)、随时间不变化的数据集合。它用于支持企业或组织的决策分析处理。

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

186ee03fff18

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

2、OLTP && OLAP

OLTP:联机事务处理过程,面向事物,如银行转账系统

OLAP:联机事物分析,面向查询,如商品推荐系统

3、数据仓库中的数据模型:

星型模型——》雪花模型

186ee03fff18

星型模型

186ee03fff18

雪花模型

二、Hive

1、什么是Hive

(1) 建立在Hadoop HDFS上的数据仓库基础架构

(2) 可以用来进行ETL

(3) 定义了类似于SQL,成为HQL

(4) 允许MapReduce自定义

Hive是SQL解析引擎,将SQL——》M/R job

Hive的表其实就是HDFS的目录/文件

2、Hive的体系结构

186ee03fff18

hive体系结构

Hive的元数据:

186ee03fff18

Hive元数据

Hive将元数据存储在数据库中(Metestore),支持mysql、derby(默认)等

Hive中的元数据包括表的名字、表的列、分区及其属性、表的属性等。

HQL的执行过程:

186ee03fff18

HQL执行过程

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

3、Hive的安装

Hive依赖于Hadoop的安装

Hadoop的安装:

(1)单机环境

(2)伪分布式环境

(3)集群环境

Hive的安装模式:三种

(1)嵌入模式

元数据信息存储在Hive自带的derby数据库中

只允许创建一个链接

多用于做demo演示

(2)本地模式

元数据信息被存储在Mysql数据库中

Mysql数据库和Hive运行在同一台物理机器上

-多用于开发和测试

(3)远程模式

Hive和MYsql运行在不同机器上,多用于生产环境

允许多个连接

4、Hive的启动方式:

(1) CLI命令行方式

(2) Web界面方式

默认端口号:9999

启动方式:

hive --service hwi &

通过浏览器来访问:http://:9999/hwi/

(3) 远程服务启动方式

端口号:10000

启动方式:

hive --service hwi &

5、Hive的数据类型

(1)基本数据类型

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

float/double:浮点数类型

boolean:布尔类型

string:字符串类型

(2)复杂数据类型

Array:数组类型。一系列相同数据类型的元素

Map :key-value键值对

struct:结构类型:可以包含不同数据类型的元素

(3)时间类型

Date 格式如YYYY-MM-DD

TimeStamp 为自1970年起秒数

注:在Hive中两者相互转换的函数:cast()

6、Hive的数据存储

(1)基于HDFS

(2)没有专门的数据存储格式

(3)存储结构主要包括:数据库、文件、表、试图

(4)可以直接加载文本文件(.txt)

(5)创建表时,可以指定Hive的列分隔符与行分隔符(默认无分隔符)

7、Hive的数据模型

(1)内部表(table)

与数据库中的table概念是类似的

每一个Table在Hive中都有一个相应的目录存储数据

所有的Table(不包括Txternal Tale)都保存在这个目录中

删除表时,元数据与数据都会被删除

例:

Create table T1

(Tid int,tname string,age int)

Create table T2

(Tid int,tname string,age int)

Location ‘/mytable/hive/t2’

--指定表存储位置

Create table T3

(Tid int,tname string,age int)

Row format delimited fields terminated by ‘,’

--指定行的分隔符是逗号

Create table T4

as

select * from sample_data

--创建表的同时创建数据,用查询语句创建数据,t4表内容与结构与表sample_data相同

Create table T5

Row format delimited fields terminated by ‘,’

as

select * from sample_data

Alter table T1 add columns(English int)

--T1表加了一列,改变表的结构

(2)分区表

partition对应于数据库的Partion列的密集索引

在Hive中,表中的一个Partition对应于表下的一个目录,所有的partition的数据都存储在对应的目录中。

186ee03fff18

分区表示意

例:

Create table Partion_table

(sid int,sname,string)

Partition by (gender string)

Row format delimited fields terminated by ‘,’

---创建分区表

Insert into table partition_table partition(gender=’F’)

Select sid,sname from sample_data where gender=’F’

分区表作用:在查询操作时,降低扫描次数,提高查询效率

如何知道查询效率提高,生成执行计划

explain select * from T where gender=‘M’

(3)外部表(extennal table)

执行已经在HDFS中存储的数据,可以创建Partition

他和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异

外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅仅删除该链接。

186ee03fff18

外部表示意

例:

Create external table external_student

(Tid int,tname string,age int)

Row format delimited fields terminated by ‘,’

Location ‘/input’

(4) 桶表(Bucket table)

桶表是对数据进行哈希取值,然后放到不同文件中存储。(把数据打散进行存储,避免造成”热块“)

186ee03fff18

桶表示意

Create table bucket_table

(Tid int,tname string,age int)

clusterd  by(sname) into 5 buckets;

--根据sname字段进行哈希运算,放入5个桶中

(5) 视图(view)

是一个虚表,是一个逻辑概念

建立在已有表的基础上,试图赖以建立的这些表成为基表

视图可以简化复杂的查询

Create View empinfo

as

select e.emptno,e.ename,e.sale,e.sale*12 annlsal d.dname

from emp e,dept d

where e.deptno=d.deptno

其他知识点:

静默模式:不显示map/reduce过程

命令行:

hive -S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值