最新大数据教育数仓之在线教育项目回顾_在线教育数仓项目(1)

		* 报名分析
		* 通过各个环节的分析,来发现每个环节流失原因,解决问题,实现提高每一步转化率
	- 需求2:持续化发展需要构建良好的产品口碑,把控学员学习质量:通过对考试、考勤、作业做管理和把控
		* 考勤分析
  • 小结

    • 掌握在线教育项目需求
  • 面试:项目介绍

02:需求主题划分
  • 目标掌握在线教育中需求主题的划分
  • 实施
    • 数据仓库的数据管理划分
      • 数据仓库【DW】:存储了整个公司所有数据
        • 数据集市/主题域【DM】:按照一定的业务需求进行划分:部门、业务、需求
          • 主题:每一个主题就面向最终的一个业务分析需求
    • 在线教育中的需求主题
      • 数据仓库:业务系统数据【客服系统、CRM系统、学员管理系统】
        • 业务数据仓库:结构化数据
      • 数据集市/主题域
        • 运营管理集市/运营域
        • 销售管理集市/销售域
        • 学员管理集市/用户域
        • 产品管理集市/产品域
        • 广告域
        • ……
      • 数据主题
        • 来源分析主题、访问分析主题、咨询分析主题
        • 销售分析主题、线索分析主题、意向分析主题、报名分析主题
        • 考勤分析主题、考试分析主题、作业分析主题
        • 产品访问主题、产品销售主题、产品付费主题
        • 表名:层 _ 【域】 _ 主题 _ 维度表
  • 小结
    • 掌握在线教育中需求主题的划分
    • 面试:项目中划分了哪些主题域以及有哪些主题?
03:数据来源
  • 目标掌握在线教育平台的数据来源
  • 实施
    • 访问分析主题、咨询分析主题
      • 客服系统:客服系统数据库
      • 需求:统计不同维度下的访问用户数、咨询用户数
        • 指标:UV、PV、IP、Session、跳出率、二跳率
        • 维度:时间、地区、来源渠道、搜索来源、来源页面
      • web_chat_ems
      • web_chat_text_ems
    • 线索分析主题、意向分析主题、报名分析主题
      • CRM系统:营销系统数据库
      • 需求:统计不同维度下意向用户个数、报名用户个数、有效线索个数
        • 维度:时间、地区、来源渠道、线上线下、新老学员、校区、学科、销售部门
      • customer_relationship:意向与报名信息表
      • customer_clue:线索信息表
      • customer:学员信息表
      • itcast_school:校区信息表
      • itcast_subject:学科信息表
      • employee:员工信息表
      • scrm_deparment:部门信息表
      • itcast_clazz:报名班级信息表
    • 考勤分析主题
      • 数据来源:学员管理系统
      • 需求:统计不同维度下学员考勤指标:出勤人数、出勤率、迟到、请假、旷课
      • tbh_student_signin_record:学员打卡信息表
      • student_leave_apply:学员请假信息表
      • tbh_class_time_table:班级作息时间表
      • course_table_upload_detail:班级排课表
      • class_studying_student_count:班级总人数表
  • 小结
    • 记住核心的表与字段
    • 面试:数据来源是什么?
04:数仓设计
  • 目标掌握业务分析主题中每个主题数仓的实现流程
  • 实施

image-20210518162724906

+ **访问分析主题**


	- ODS:web\_chat\_ems、web\_chat\_text\_ems
	- DWD:将两张表进行合并,并且实现ETL
	- DWS:基于不同维度统计所有访问数据的用户个数、会话个数、Ip个数
+ **咨询分析主题**


	- ODS:web\_chat\_ems、web\_chat\_text\_ems
	- DWD:直接复用了访问分析的DWD
	- DWS:基于不同维度统计所有咨询【msg\_count > 0】数据的用户个数、会话个数、Ip个数
+ **意向分析主题**


	- ODS:customer\_relationship、customer\_clue
	- DIM:customer、employee、scrm\_department、itcast\_shcool、itcast\_subject
	- DWD:对customer\_relationship实现ETL
	- DWM:实现所有表的关联,将所有维度和事实字段放在一张表中
	- DWS:实现基于不同维度的聚合得到意向人数
+ **报名分析主题**


	- ODS:customer\_relationship
	- DIM:customer、employee、scrm\_department、itcast\_clazz
	- DWD:对customer\_relationship实现ETL并且过滤报名数据
	- DWM:实现四张表的关联,将所有维度和事实字段放在一张表中
	- DWS:基于小时维度对其他组合维度进行聚合得到指标
	- APP:基于小时的结果累加得到天、月、年维度下的事实的结果
+ **考勤管理主题**


	- ODS:tbh\_student\_signin\_record、student\_leave\_apply
	- DIM:tbh\_class\_time\_table、course\_table\_upload\_detail、class\_studying\_student\_count
	- DWD:没有
	- DWM
		* 学员出勤状态表:基于学员打卡信息表
		* 班级出勤状态表:基于学员出勤状态表
		* 班级请假信息表:基于请假信息表得到的
		* 班级旷课信息表:总人数 - 出勤人数 - 请假人数
	- DWS:基于天构建天+班级维度下的出勤指标:24个
	- APP:基于人次进行Sum累加重新计算月、年的出勤指标
  • 小结

    • 掌握业务分析主题中每个主题数仓的实现流程
    • 面试:分层怎么设计的?
      • ODS:原始数据层:存储原始数据
      • DWD:明细数据层:ETL以后的明细数据
      • DWM:轻度汇总层:对主题的事务事实进行构建,关联所有事实表获取主题事实,构建一些基础指标
      • DWS:汇总数据层: 构建整个主题域的事实和维度的宽表
      • APP:拆分每个主题不同维度的子表
      • DIM :维度数据层:所有维度表
05:技术架构
  • 目标掌握整个项目的技术架构
  • 实施

image-20210518162810459

+ 数据源:MySQL数据库
+ 数据采集:Sqoop
+ 数据存储:Hive:离线数据仓库
+ 数据处理:HiveSQL【MapReduce】 =》 以后简历中要改为SparkSQL等工具来实现
+ 数据结果:MySQL
+ 数据报表:FineBI
+ 协调服务:Zookeeper
+ 可视化交互:Hue
+ 任务流调度:Oozie
+ 集群管理监控:Cloudera Manager
+ 项目版本管理:Git
  • 小结

    • 掌握整个项目的技术架构
    • 面试:项目介绍或者项目的技术架构?
06:项目优化
  • 目标:掌握Hive的常见优化

  • 实施

    • 属性优化

      • 本地模式
      hive.exec.mode.local.auto=true;
      
      
      • JVM重用
      mapreduce.job.jvm.numtasks=10
      
      
      • 推测执行
      mapreduce.map.speculative=true
      mapreduce.reduce.speculative=true
      hive.mapred.reduce.tasks.speculative.execution=true
      
      
      • Fetch抓取
      hive.fetch.task.conversion=more
      
      
      • 并行执行
      hive.exec.parallel=true
      hive.exec.parallel.thread.number=16
      
      
      • 压缩
      hive.exec.compress.intermediate=true
      hive.exec.orc.compression.strategy=COMPRESSION
      mapreduce.map.output.compress=true
      mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.DefaultCodec
      
      
      • 矢量化查询
      hive.vectorized.execution.enabled = true;
      hive.vectorized.execution.reduce.enabled = true;
      
      
      • 零拷贝
      hive.exec.orc.zerocopy=true;
      
      
      • 关联优化
      hive.optimize.correlation=true;
      
      
      • CBO优化器
      hive.cbo.enable=true;
      hive.compute.query.using.stats=true;
      hive.stats.fetch.column.stats=true;
      hive.stats.fetch.partition.stats=true;
      
      
      • 小文件处理
      #设置Hive中底层MapReduce读取数据的输入类:将所有文件合并为一个大文件作为输入
      hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
      #如果hive的程序,只有maptask,将MapTask产生的所有小文件进行合并
      hive.merge.mapfiles=true;
      hive.merge.mapredfiles=true;
      hive.merge.size.per.task=256000000;
      hive.merge.smallfiles.avgsize=16000000;
      
      
      • 索引优化
      hive.optimize.index.filter=true
      
      
      • 谓词下推PPD
      hive.optimize.ppd=true;
      
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4UGgQtXE-1690355726417)(J:/baidudownload/09-第九阶段spark项目-一站式制造/Day5_数仓事实层DWB层构建/02_随堂笔记/Day5_数仓事实层DWB层构建.assets/image-20210518184328346.png)]

        * Inner Join和Full outer Join,条件写在on后面,还是where后面,性能上面没有区别
        * Left outer Join时 ,右侧的表写在on后面,左侧的表写在where后面,性能上有提高
        * Right outer Join时,左侧的表写在on后面、右侧的表写在where后面,性能上有提高
        * 如果SQL语句中出现不确定结果的函数,也无法实现下推
      
      • Map Join
      hive.auto.convert.join=true
      hive.auto.convert.join.noconditionaltask.size=512000000
      
      
      • Bucket Join
      hive.optimize.bucketmapjoin = true;
      hive.auto.convert.sortmerge.join=true;
      hive.optimize.bucketmapjoin.sortedmerge = true;
      hive.auto.convert.sortmerge.join.noconditionaltask=true;
      
      
      • Task内存
      mapreduce.map.java.opts=-Xmx6000m;
      mapreduce.map.memory.mb=6096;
      mapreduce.reduce.java.opts=-Xmx6000m;
      mapreduce.reduce.memory.mb=6096;
      
      
      • 缓冲区大小
      mapreduce.task.io.sort.mb=100
      
      
      • Spill阈值
      mapreduce.map.sort.spill.percent=0.8
      
      
      • Merge线程

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

```
	- Merge线程

[外链图片转存中…(img-9bIpMsxH-1714827548680)]
[外链图片转存中…(img-aYZB6NjX-1714827548680)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值