教育数仓项目介绍和需求管理(上半部分)

一、项目简介

  1. 真实的教育大数据业务逻辑,包括:访问、咨询、意向、线索、报名、考勤等各个阶段,大幅提升学员在教育行业中的竞争力。
  2. 深入讲解数据仓库的分层与建模过程。
  3. 海量数据场景下的性能优化。
  4. 拉链表的具体应用、对变化的更新数据进行存储和分析。
  5. 每个公司都会要求使用的版本控制工具。
  6. 大公司、核心项目必备的Code Review技能。
  7. 可视化部署与运维大数据环境。

1.1项目目的

OLTP原始数据(mysql)——》数据采集(ODS)——》清洗转换(DWD)——》统计分析(DWS)——》导出至OLAP(Mysql)

1.2部分教育大数据分析平台

1.3访问和咨询用户数据看板

客户访问和咨询主题,顾名思义,分析的数据主要是客户的访问数据和咨询数据。但是经过需求调研,这里的访问数据,实际指的是访问的客户量而不是客户访问量。原始数据来源于咨询系统的mysql业务数据库。

用户关注的核心指标有:1、总访问客户量、2、地区独立访客热力图、3、访客咨询率趋势、4、客户访问量和访客咨询率双轴趋势、5、时间段访问客户量趋势、6、来源渠道访问量占比、7、搜索来源访问量占比、7、活跃页面排行榜。

1.4项目技术架构

基于c1oudera manager大数据统一管理平台,在此平台之上构建大数据相关的软件(z0okeeper,HDFS,YARN,HIVE,OOZIE,SQOOP,HUE...),除此以外,还使用FINEBI实现数据报表展示

.1.4.1各个软件相关作用:

zookeeper:集群管理工具,主要服务于hadoop高可用以及其他基于zookeeper管理的大数据软件

主要负责最终数据的存储HDFS :

YARN:主要提供资源的分配

HIVE:用于编写SQL,进行数据分析

主要是用来做自动化定时调度oozie:

sqoop:主要是用于数据的导入导出

HUE:提升操作hadoop用户体验,可以基于HUE操作HDFS,HIVE。

FINEBI:由帆软公司提供的一款进行数据报表展示工具

项目架构中:数据流转的流程首先业务是存储在MySQL数据库中,通过sqoop对MySQL的数据进行数据的导入操作,将数据导入到HIVE的ODS层中,对数据进行清洗转换成处理工作,处理之后对数据进行统计分析,将统计分析的结果基于sqoop在导出到MySQL中,最后使用finebi实现图表展示操作,由于分析工作是需要周期性干活,采用ooize进行自动化的调度工作,整个项目是基于cloudera manager进行统一监

1.5、需求:每年各个地区的总访问量

涉及维度:

       固有维度:

              时间维度:年,季度,月,天,小时

       产品属性维度:

              地区维度:来源渠道,搜索来源,受访页面

涉及指标:

       访问量

       咨询量

涉及表:

       事实表

二、项目具体流程

2.1前期准备:

将三台虚拟机开起来,登录cdh网页检查各个组件是否正常运行,连接数据库,建立好对应的数据表

2.2 数据准备和了解

创建模拟数据,将其上传到虚拟机上。查看资源下的文件,整理其字段信息和行数待用,并且检查各份数据可能存在的问题,比如文件乱码,数据空缺等。

小Tips:先行备好各表的字段信息有助于轻松构建ODS层的外部表,备好行数有助于在建表之后快速检查是否建表成功。

2.3.1上传数据

使用final shell 上传数据至hdfs中

2.3.2分层建模与实现

模拟数据全量导入hive

1).建立ods层库,以及一张主表和副表

建表字段:构建为分区表,区分字段为时间字段

数据校验

2).建立dwd库,一张表

建表字段:原有字段+转换时间后的字段+清洗字段

3).Dws层,一张表

建表字段:指标统计字段+各个维度字段+三个经验字段

数据从dwd层到dws层

4)导出数据

5)需求数据查询

三、项目经验总结

3.1、踩坑记录

  1. HiveServer2 的 Java 堆栈

Hiveserver2异常退出,导致连接失败的问题。

解决方法:修改HiveServer2 的 Java 堆栈大小。

2、创建分区表时注意开启动态分区配置

3、

Execution failed with exit status: 137

出现原因:

可能是由于服务器内存不足引起的, 在进行mapJoin时候, 内存不足以放下小表中的数据

解决方案: 不让其进行mapjoin优化操作

-- 关闭自动装载(尤其是对于内存比较小的机器)

set hive.auto.convert.join= false;

Tips:注意最后每层都进行数据校验,防止后期出错花费大量时间!!!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐