物流管理系统之数据仓库实现(二)

1. 背景

在上篇文章中实现了物流管理系统,在这篇文章中将使用大数据相关技术,模拟生产环境下对数据的处理过程,将系统业务流程中产生的登录、订单、商品等相关的业务交互数据和埋点用户行为数据抽取到数据仓库中,然后企业的决策者需要及时地对这些数据进行归类分析,获得企业运营的各种业务特征,从而为下一步的经营决策提供数据支撑。

2. 技术实现

2.1 Sqoop

Sqoop是Sql-to-Hadoop的简称。Sqoop是一个用于Hadoop和结构化数据存储(如关系型数据库)之间进行高效传输大批量数据的工具。它包括以下两个方面:可以使用Sqoop将数据从关系型数据库管理系统(如MySQL)导入到Hadoop系统(如HDFS、Hive、HBase)中;将数据从Hadoop系统中抽取并导出到关系型数据库(如MySQL)。
Sqoop本质是一款使用MapReduce进行数据迁移的工具,Sqoop的数据导入和导出功能是通过基于Map Task完成,没有Reduce阶段。所以它是一种批处理方式进行数据传输,很难实现实时的数据导入和导出。

2.2 Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop有三个核心组件,包括HDFS、MapReduce、YARN。其中HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能监测和应对硬件故障;MapReduce是一个软件框架,基于该框架能够容易的编写应用程序,这些应用程序能够运行在有上千个商务机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行处理上TB级别的海量数据。YARN是作业调度和集群资源管理框架,主要是负责MapReduce的资源分配。

2.3 Hive

Hive是基于Hadoop的一个数据仓库工具。Hive数据存储依赖HDFS上,数据计算依赖MapReduce,表在HDFS上的体现为一个预定义好的目录。Hive不支持对数据的修改和增加;HQL是一种类SQL,最终会转化为Hadoop的MapReduce任务。学习成本低,通过类SQL实现MapReduce任务,使逻辑可读性增强;Hive适用于离线的大数据分析统计,有很高的延迟,因为底层计算引擎MapReduce在任务启动的时候会消耗很多时间,在任务的提交和调度的时候也有很大的开销。所以数据量小的数据不适于用Hive分析统计。

3. 理论基础

3.1 数据仓库

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合,用于支持管理人员的决策。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
通常情况下,业务系统不会保留所有的历史数据。因此,必须创建一个新的商务智能环境,确保能捕获历史上所有版本的数据。针对业务系统设计的数据库响应时间快,一般是秒级或秒级以下;而数据仓库在多年间积累和收集的数据有数百万甚至数十亿的记录,因此响应时间可能变成数分钟或更长。因此在处理有大数据量的历史数据时使用数据仓库是很有必要的。

3.1.1 主题

数据仓库的数据是面向主题的。主题(Subject)是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。例如“订单分析”就是一个分析领域,因此这个数据仓库应用的主题就是“订单分析”。
主题是根据分析的要求来确定的。这与按照数据处理或应用的要求来组织数据是不同的。数据仓库面向在数据模型中已经定义好的公司的主要主题领域。典型的主题领域包括顾客、产品、订单和财务或是其他某项事务或活动。本系统分析的就是订单主题。

3.2 数仓分层

根据实际生产情况,建议将数据仓库分为三层,自下而上为: 数据引入层(ODS,Operation Data Store)
数据公共层(CDM,Common Data Model)
数据应用层(ADS,Application Data Service)
在这里插入图片描述
数据引入层(ODS,Operation Data Store):存放的是接入的原始数据。经过ETL之 后装入本层,大多是按照源头业务系统的分类方式而分类的。为了考虑后续可能追溯数据为 题,因此对这一层不建议做过多的数据清洗工作,原封不动接入源数据即可,至于数据的去 噪,去重,异常值处理等过程可以放在后面的DW层

数据公共层(CDM,Common Data Model,又称通用数据模型层),包含DIM维度表、DWD和 DWS,由ODS层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建 可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。

明细粒度事实层(DWD数据明细层):该层一般保持和ODS层一样的数据粒度,并且 提供给一定的数据质量保证。同时为了提高数据明细层的易用性,该层会采用一些"维度退 化"手法,将维度退化到事实表中,减少事实表和维度表的关联。另外,在该层也会做一部分 的"数据聚合",将相同主题的数据汇集到一张表中,提高数据的可用性.采用"维度退化"的 方式,将维度退化到事实表中减少事实表和维度表的关联,提高明细表的易用性.

公共汇总粒度事实层(DWS数据服务层):以分析的主题对象作为建模驱动,基于上 层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。 构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。 公共汇总粒度事实层的表通常也被称为汇总逻辑表,用于存放派生指标数据。“又称为数据集 市或者宽表,按照业务划分,例如流量,订单,用户等,生成字段比较多的宽表,用于后续 的业务查询,OLAP分析,数据分析等”。采用更多的宽表化手段,构建公共指标数据层.

公共维度层(DIM):基于维度建模理念思想,建立整个企业的一致性维度。降低 数据计算口径和算法不统一风险。公共维度层的表通常也被称为逻辑维度表,维度和维度逻 辑表通常一一对应。
(1)高基数维度数据:一般是用户资料表,商品资料表类似的资料表。数据量可能是千万级或 者上亿级别
(2)低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可 能是个位数或者几千几万

数据应用层(ADS,Application Data Service):存放数据产品个性化的统计指标 数据,主要面向前端展示。根据CDM与ODS层加工生成

3.2.1 为什么分层

数据仓库更多代表的是一种对数据的管理和使用的方式,它是一整套包括了etl、调度、建模 在内的完整的理论体系流程。数据仓库在构建过程中通常都需要进行分层处理。业务不同, 分层的技术处理手段也不同。 分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控。详细来讲,主要有 下面几个原因:

  • 清晰数据结构
    每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  • 数据血缘追踪
    简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果 有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
  • 减少重复开发
    规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
  • 把复杂问题简单化
    将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理 解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要 从有问题的步骤开始修复。
  • 屏蔽原始数据的异常
  • 屏蔽业务的影响,不必改一次业务就需要重新接入数据

4. 订单主题演示

4.1 ODS层

ODS层数据是由MySQL数据库中订单表直接抽取而来的,不做任何修改。
在这里插入图片描述

4.2 DW层

DWS层存储的是高度汇总的数据。
在这里插入图片描述

4.3 DM层

这里主要对订单的下单时间、下单地址、下单时间段、订单金额等指标进行了分析,有利于企业掌握用户行为习惯,从而定制对应的营销策略。
在这里插入图片描述

4.4 APP层

DM层之前的数据都是在Hive里面存储,APP层的数据是由DM层数据使用Sqoop直接抽取而来的,一般保存在业务数据库中,主要供前端进行数据展示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值