Hive 企业应用

本文介绍了数据仓库架构设计,包括数据仓库的水平分层和垂直分主题域。详细阐述了数据仓库建模的阶段发展,强调其对企业业务梳理和决策支持的重要性。同时,讨论了数据分析的基本概念,对比了OLTP和OLAP的特点,并详细解析了Hive如何支持数据分析,特别是其分析函数和窗口函数的应用。
摘要由CSDN通过智能技术生成

一. 数据仓库架构设计
数据仓库的主要工作就是ETL,即是英文 Extract-Transform-Load 的缩写,用来描述数据从来源端经过装载(load)、抽取(extract)、转换(transform)至目的端的过程。
数据仓库架构设计,即为公司针对自身业务场景实现的水平分层、垂直分主题的数据仓库构建过程的顶层设计。

        1. 数据架构
● 架构原则:先水平分层,再垂直分主题域。
● 数据架构分三层
源数据落地区(SDF:Source Data File)
数据仓库层(DW:Data WareHouse)
数据集市层(DM:Data Market)
● 数据仓库层进一步细分为三层
源数据层(DWB)
细节数据层(DWD)
汇总数据层(DWS)

二. 数据仓库建模

1.概念定义
● 数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。    
● 数据模型表现的抽象是实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系。
● 数据仓库模型是数据模型中针对特定的数据仓库应用系统的一种特定的数据模型。
● 数据建模即数2据模型的构建和应用过程。
● 数据仓库建模即数据仓库模型的构建和应用过程。
2.数据仓库建模的发展历史与意义
● 数据仓库建模的阶段发展
    ● 简单报表阶段:
    ● 该阶段系统的主要目标是解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所需要的汇总数据。
    ● 这个阶段的大部分表现形式为数据库和前端报表工具。
    ● 特点:简单、单一
    ● 数据集市阶段
    ● 该阶段系统主要是根据某个业务部门的需要,进行一定的数据的采集,整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据。
    ● 特点:多维度、业务场景化、按需定制性
    ● 数据仓库阶段
    ● 该阶段系统主要是按照一定的数据模型,对整个企业的数据进行采集,整理,并且能够按照各个业务部门的需要,提供跨部门的,完全一致的业务报表数据,能够通过数据仓库生成对对业务具有指导性的数据,同时,为领导决策提供全面的数据支持。
    ● 特点:全面、灵活、数据模型支撑、体系化
● 数据建模的意义
    ● 进行全面的业务梳理,改进业务流程。
    ● 对公司进行全面梳理
    ● 了解公司的业务运行架构和运行状态
    ● 为改进公司架构、提升运营效率、指导生产提供科学支撑。
    ● 建立全方位的数据视角,消灭信息孤岛和数据差异。
    ● 提供公司数据的全面视角,不再是部门各自为战。
    ● 清晰化部门间的内在联系,消灭部门之间的信息孤岛。
    ● 保证公司全局数据的一致性,消灭差异性。
    ● 解决业务的变动和数据仓库的灵活性。
    ● 将底层技术实现与业务表达展现解耦。
    ● 需求的变动或新需求,可以最小化的成本达到目标。
    ● 帮助数据仓库系统本身的建设。
    ● 技术开发人员和业务需求人员较容易达成一致意见。
    ● 各方人员明确当前数据状况,便于做当前任务评估和长远构建规划。

三. 数据分析
1.概念定义
● 数据分析是指用适当的统计分析(当下也包含机器学习等数据挖掘)的方法
● 对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。
● 这一过程也是质量管理体系的支持过程。在实用中,数据分析可帮助人们作出判断,以便采取适当行动。
● 辅助决策的最重要方法之一。
● 社区定义:
    ● 简而言之,基于给定的大批量的源数据,通过数据统计分析相关的方法,得出有利于辅助决策的结果。

2.专业术语
2.1 OLTP
● 全称:on-line transaction processing。中文意思: 联机事务处理
● 其是数据库的主要应用,主要是执行基本日常的事务处理,如数据库记录的增删查改。
比如在支付定或银行的一笔交易记录,就是一个典型的事务。 
● 主要特点
■ 实时性要求高,操作完后立刻要能看到结果。
■ 数据量不是很大,生产库上的数据量一般不会太大,而且会及时做相应的数据处理与转移。 
■ 交易一般是确定的,比如银行存取款的金额肯定是确定的,所以OLTP是对确定性的数据进行存取 
■ 高并发,并且要求满足ACID原则。比如两人同时操作一个银行卡账户,比如大型的购物网站秒杀活动时上万的QPS请求。
● 总结
主要是指关系数据库中的增删查改,也是我们最常用操作,此为数据库的基础。

● 主要特点
■ 实时性要求不是很高,比如最常见的应用就是天级更新数据,然后出对应的数据报表。 
■ 数据量大,因为OLAP支持的是动态查询,所以用户也需要通过将很多数据的统计后才能得到想要知道的信息,例如时间序列分析等等,所以处理的数据量很大; 
■ OLAP系统的重点是通过数据提供决策支持,所以查询一般都是动态,自定义的。所以在OLAP中,维度的概念特别重要。一般会将用户所有关心的维度数据,存入对应数据平台。
● 总结
■ 其是数据仓库的核心部件。
■ 所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能(BI business intelligence)、决策支持等重要的决策信息。
■ 数据仓库是在数据库应用到一定程序之后而对历史数据的加工与分析,读取较多,更新较少。
■ OLTP发展到一定阶段后产生的OLAP。
3.hive对数据分析的支持
Hive数据分析函数:分析函数、窗口函数、增强Group(用的极少,不做讲解)三类,及用于辅助表达的over从句。
3.1 产生背景
常规SQL语句中,明细数据和聚合后的数据不能同时出现在一张表中,而此类需求又常见。
如:员工既要查询当前收入多少又要显示本年度收入多少;
员工既要查询当前收入多少,又要显示历史总收入多少;
购物者既要查询当前剩余多少,又要显示历史充值多少等等。
该类函数即为解决两者可以同时出现的问题。
3.2 函数分类
● 分析函数(不支持与window子句联用,即ROWS BETWEEN)
    ◆ NTILE:序列分析函数,用于数据分片排序,对数据分片并返回当前分片值。(即对数据集分块,如第1块,第2块等),不均匀的时候,依次增加前边分片序列的数量。
    ◆ ROW_NUMBER:序列分析函数,用于排序,按照顺序,不关心是否有相等情况,从1开始逐条给数据一个加1后的序列号。如1,2,3,4....
    ◆ RANK:序列分析函数,用于排序,按照顺序,关心相等情况,如遇到相等情况,名次会留下空位。如1,2,2,4,4,6......
    ◆ DENSE_RANK:序列分析函数,用于排序,关心相等情况,如遇到相等情况,名次不会留下空位。如1,2,2,3,3,4......
● 窗口函数
    ◆ LAG:函数LAG(col,n,DEFAULT)用于统计窗口内往上第n行值。
第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
    ◆ LEAD:与LAG作用相反,函数形式如LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值。第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
    ■ FIRST_VALUE: 取分组内排序后,截止到当前行,第一个值
    ■ LAST_VALUE:与FIRST_VALUE相反,取分组内排序后,截止到当前行,最后一个值
● over()从句:指定分析窗口函数的细化落围规则
    ◆ 与标准的聚合函数COUNT、SUM、MIN、MAX、AVG联用,如sum(...) over(...)
    ◆ 与区配的分析窗口联用,如ROW_NUMBER() over(...)
    ◆ 使用PARTITION BY语句,使用一个或者多个原始数据类型的列
    ◆ 使用PARTITION BY与ORDER BY语句,使用一个或者多个数据类型的分区或者排序列
    ◆ 使用窗口规范,窗口规范支持以下格式:
    ■ ROWS BETWEEN:即为window子句或称窗口子句,属于物理截取,即物理窗口,从行数上控制截取数据的大小多少。
    ■ RANGE BETWEEN: 即为window子句或称窗口子句,属于逻辑截取,即逻辑窗口,从列值上控制窗口的大小多少。
    ■ PRECEDING:window子句之往前
    ■ FOLLOWING:window子句之往后
    ■ CURRENT ROW:window子句之当前行
    ■ UNBOUNDED:window子句之起点,UNBOUNDED PRECEDING 表示从前面的起点,UNBOUNDED FOLLOWING:表示到后面的终点。
    ◆ 注意:order by子句后边如果没有跟着多大窗口,则默认为range between unbounded preceding and current row

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值