2020-08-17

数仓项目

项目介绍

此项目针对用户的线上访问行为,消费行为,业务操作行为进行统计分析,数据挖掘.以支撑公司的业务运营,改善公司运营效果。除此之外往往还需要对用户进行精准营销和个性化推荐,改善用户体验,提高用户的粘性,增大销售额。针对这两种业务,需要构建数据仓库系统和用户画像系统(深入分析用户后给用户打上各种规范标签:年龄、性别、地域特征、偏好特征、价值指数、行为习惯、消费习惯等)、推荐系统来支撑。
该项目适用于主营业务在线上(app/网站/微信小程序)进行的公司。(例如:外卖,各类app,电商,金融,医药等)

从技术架构上来说,整体包含3层

数据采集汇聚层
数据计算层
数据服务层

详细介绍技术架构

1.数据采集汇聚层:
(1)前端数据源层:我们有pc端埋点日志服务器,移动端埋点日志服务器,业务系统数据库。
日志数据:
<1>埋点日志生成流程:埋点代码->发送请求->日志服务器->记录日志到服务器本地磁盘
<2>埋点日志类型: app端埋点日志,web端埋点日志,wx小程序埋点日志
<3>原始日志格式:普通文本文件,文件内容是JSON数据格式一条一条记录
(2)数据采集层,分为两个方面:
<1>第一个方面是用flume来实现对日志数据进行采集
<2>第二个方面是用sqoop来实现业务库的数据抽取

2.数据计算层:
(1)我们这个项目的核心组件就是用hive建立数仓,数仓这部分也就是整个项目的核心部分。
(2)数仓根据主题与分层划分表单,主题划分主要根据不同的业务指标,分层主要根据表单的处理程度
(3)当然这里面也用了除了hive之外的一些别的技术组件:
<1>spark:有一些相对复杂的计算任务用sql不好处理的,我们是通过spark来开发的(比如数据处理和后面的一些
挖掘算法实现,就像行为性别预测,用了逻辑回归算法,评论语义分析,用了朴素贝叶斯算法等等)
<2>azkaban:任务调度,用的是azkaban
<3>元数据管理这块,在后期我们引入了atlas,基本的元数据管理需求都能满足,尤其是数据的血缘追溯还是比较方便的,不过它自带的webadmin比较简单

3.数据服务层:
总共分为三大方面:为推荐引擎系统提供数据支撑,为广告投放引擎提供数据支撑,为数据运营系统提供数据支撑。
(1)为推荐引擎系统提供数据支撑:
需要用到的报表:用户的基本属性画像标签表,用户的偏好类画像标签表,推荐算法(协同过滤算法那)得出的推荐表。
(2)为广告投放引擎提供数据支撑:
需要用到的报表:用户的基本属性画像标签表,用户的偏好类画像标签表
(3)为数据运营系统提供数据支撑:
需要用到的报表:数据分析可能会用到数仓中所有的数据(包含ODS、DWD、DWS、ADS所有层)包括运营分析数据,画像分析数据等,而且在操作这些数据的时候,不光有简单的查询,可能还有复杂的即时分析运算。

核心模块要点介绍

hive 数仓模块
(1) 层次上,分了 ODS/DWD/DWS/ADS 层,不过在实际实施过程中,也不是完美遵循

  • ODS:操作数据层
     主要作用:直接映射操作数据(原始数据),数据备份;
     建模方法:与原始数据保持完全一致
     存储周期:相对来说,存储周期较短;视数据规模,增长速度,以及业务的需求而定;对于埋点日志数据ODS层存储,通常可以选择3个月或者半年;存1年的是土豪公司(或者确有需要)

数据采集
采集源:KAFKA
TOPIC:app_log, wx_log,web_log
采集工具:FLUME

具体的流程就是将经过spark预处理过后的数据(app端埋点日志、web端埋点日志、微信小程序端埋点日志)导入到hive。另一方面是sqoop从业务库直接导入的业务数据表单。
考虑到ods层对接的数据是hive数仓外部的数据,应该把ods层的表定义为外部表,避免删表操作导致数据丢失。

  • DWD层:数仓明细层
    需求分析
    清洗过滤
    1,去除json数据体中的废弃字段(前端开发人员在埋点设计方案变更后遗留的无用字段):
    2,过滤掉json格式不正确的(脏数据)
    3,过滤掉日志中account及deviceid全为空的记录
    4,过滤掉日志中缺少关键字段(event/eventid/sessionid 缺任何一个都不行)的记录!
    5,过滤掉日志中不符合时间段的记录(由于app上报日志可能的延迟,有数据延迟到达)
    6,对于web端日志,过滤爬虫请求数据(通过useragent标识来分析)

技术选型
由于本层数据ETL的需求较为复杂,用hive sql实现非常困难
因而此环节将开发spark程序来实现

DWD层的数据粒度和ODS层保持一致。相对于ODS层主要区别有:字段规范化,数据清洗,字段补充(常用维度信息)。另一方面,可根据实际情况,根据主题将ODS层切分。
简单的说,DWD主要进行两个任务,处理表单字段(补充字段、关联维表等)和按主题切分表单。

  • DWS层:数仓服务层(数仓汇聚层)
    dws层主要是服务于最后的ads数据产品层。从dwd通过一系列分析可以直接得到ads层表单,但涉及到计算过程复杂,中间表单复用等问题,所以设计了数仓汇聚层,用来对dwd层的数据表单先做一定程度的汇聚操作,以便ads层的计算。

  • ADS层:数据产品层
    存放数仓最终结果报表的一层,根据业务需求建模。
    主题上,主要有流量分析,用户分析,交互事件分析,广告活动分析,转化分析,订单分析, GMV 分析、购物车分析等

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值