大数据-Hive

数据仓库

数据仓库面向决策、支持分析的平台。数据仓库本身不存储数据,通过ETL任务,将已有的数据进行分析,得到结果,然后被其他业务系统消费。

OLTP & OLAP

OLTPOLAP
数据源仅包含当前运行业务数据整合来自多个数据源的数据,包括OLAP和外部来源
目的面向应用,面向业务,支撑事务面向主题,面向分析,支撑分析决策
焦点当下当下(实时数仓)以及过去(离线数仓)
任务读写操作大量读而很少写的操作
响应时间毫秒秒、分钟、小时或者天
任务MB,GBPB,EB

数据库是为了捕获数据而设计的,数据仓库是为了分析数据而设计的。

特点

  • 面向主题
  • 集成性
  • 非易失性
  • 时变性

ETL & ELT

  • E(提取)
  • T(转换)
  • L(加载)

数仓分层

层次特点
ODS数据引入:引入数据源
DW数据仓库层:数据加工和整合
DA数据应用层

请添加图片描述
分层的好处:

  • 把复杂问题简单化
  • 屏蔽原始数据的影响

Hive

Apache Hive是建立在Hadoop之上的开源数据仓库系统。

  1. Hive核心是将HQL转换为MapReduce程序 ,然后将程序提交到Hadoop集群执行;
  2. Facebook实现并开源
    请添加图片描述

重点理解

  1. Hive能将数据映射成一张表,这个映射是指什么?
    文件和表的对应关系
  2. Hive软件本身到底承担了什么功能职责?
    SQL语法解析和编译成MR程序

数据存储

元数据存储在关系型数据库中;
数据存储在HDFS中。

数据类型

隐式数据转换和显式数据转换(CAST)

  • 原生数据类型:Int Double Date TimeStamp String
  • 复杂数据类型:Array Map Struct Union

Hive读写文件的机制

SerDe:

  • Serde是Serializer和Deserializer和简称
  • 序列化是将对象序列化为字节码的过程,而反序列化是将字节码反序列化为对象请添加图片描述

内部表&外部表

内部表外部表
创建方式默认external
Hive管理范围元数据、表数据元数据
删除表结果删除元数据,删除HDFS上文件数据只会删除元数据
操作支持archive,unarchive,truncate,merge,concatenate不支持
事务支持ACID/事务性不支持
缓存支持结果缓存不支持

分区表

分区字段不能是表中存在的字段

静态分区多重分区动态分区
特点分区的属性是由用户在加载数据时手动指定,load参数用于指定待加载的数据位于本地文件系统还是HDFS系统分区之间是一种递进的关系,从HDFS角度下是子文件夹下再划分子文件夹分区的字段是基于查询结果(参数位置)自动推断。核心语法是insert+select
示例请添加图片描述请添加图片描述请添加图片描述

事务

数据流的摄取。许多用户使用Apache Flume、Apache Storm或Apache Kafka等工具将数据流导入Hadoop集群。这些工具可以以每秒数百行或更多的速度写入数据,而Hive只能每15分钟到1小时增加一个分区。更频繁地添加分区会很快导致表中出现大量分区。这些工具可以将数据流到现有的分区中,但这会导致读取器脏读(也就是说,他们会在开始查询之后看到写入的数据),并在他们的目录中留下许多小文件,这会给NameNode带来压力。有了这个新功能,将支持这个用例,同时允许读者获得一致的数据视图,并避免过多的文件。

缓慢变化维度。在典型的星型模式数据仓库中,维度表会随着时间缓慢更改。例如,零售商将开设新的商店,这些商店需要添加到stores表中,或者现有的商店可能会更改其面积或其他一些可跟踪的特征。这些更改将导致插入单个记录或更新记录(取决于所选择的策略)。从0.14开始,Hive就能够支持这个功能。

数据重述。有时收集的数据被发现是不正确的,需要纠正。或者第一个数据实例可能是一个近似值(90%的服务器报告),稍后提供完整的数据。或者业务规则可能要求由于后续交易而重新申明某些交易(例如,在购买之后,客户可能会购买会员资格,因此有权享受折扣价格,包括之前的购买)。或者,根据合同,用户可能被要求在客户关系终止时删除他们的数据。从Hive 0.14开始,这些用例可以通过插入、更新和删除来支持。
在这里插入图片描述

视图

Hive中的视图是一种虚拟表,只保存定义,不实际存储数据。视图是用来简化操作的,不缓冲记录,也没有提高查询性能。

物化视图
在这里插入图片描述

  • Hive3.0引入,提供对于物化视图的查询自动重写机制
  • 物化视图存储选择机制:(1)本地存储在Hive(2)自定义storage handlers
  • 优化数据查询访问效率,相当于从数据预处理的角度优化数据访问。

查询重写机制

在这里插入图片描述

语法

ORDER BY & CLUSTER BY & DISTRIBUTE BY

在这里插入图片描述

6种join方式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

运算符

show functions # 展示所有的运算符
describe function func # 运算符信息
describe function extend func # 运算符更加详细的信息

空表

dual

UDF

  • UDF:普通函数,一进一出
  • UDAF:聚合函数,多进一出
  • UDTF:建表函数,一进多出

java_method、reflect可以调用Java中的函数

在这里插入图片描述

explode

输入一行数据,转为多行数据输出。可以将输入数据中的数据转为多行数据输出。

  • 只支持Array和Map
  • 常和lateral view配合使用
    在这里插入图片描述

处理多字节分隔符

  • 替换分隔符
  • 正则加载RegexSerde(推荐)
  • 自定义InputFormat

MR属性优化

  • 小任务本地执行
  • JVM重用
  • 并行执行

Join优化

  • Map Join:小表join大标
  • Reduce Join: 大表join大表
  • Bucket Join:大表join大表优化方案

执行优化

  • 关联优化
set hive.optimize.correlation=true
  • CBO优化器请添加图片描述请添加图片描述

请添加图片描述

  • 谓词下推
    请添加图片描述

数据倾斜

数据倾斜-Group

  • Map端聚合
  • 随机分区
  • 数据倾斜自动负载均衡
    数据倾斜-Join
  • 提前过滤,将大数据变为小数据,实现Map Join
  • 使用Bucket Join
  • Skew Join请添加图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值