2.2 业务描述
2.2.1 采集模块业务描述
1.数据生成模块之用户行为数据基本格式
用户执行的一些操作会生成用户行为数据发送到服务器,数据分为公共字段和业务字段。
● 公共字段:基本所有Android手机包含的字段。
● 业务字段:前端埋点上报的字段,有具体的业务类型。
如下示例表示业务字段的上传。
示例日志(服务器时间戳 | 日志)如下。
2.数据生成模块之事件日志数据
(1)商品列表页加载过程的事件名称为loading,产生的日志数据的具体字段名称及字段描述如表2-1所示。
表2-1 商品列表页加载过程loading
(2)商品点击的事件名称为display,产生的日志数据的具体字段名称及字段描述如表2-2所示。
表2-2 商品点击display
(3)商品详情展示的事件名称为newsdetail,产生的日志数据的具体字段名称及字段描述如表2-3所示。
表2-3 商品详情展示newsdetail
(4)广告点击的事件名称为ad,产生的日志数据的具体字段名称及字段描述如表2-4所示。
表2-4 广告点击ad
(5)消息通知的事件名称为notification,产生的日志数据的具体字段名称及字段描述如表2-5所示。
表2-5 消息通知notification
(6)用户后台活跃的事件名称为active_background,产生的日志数据的具体字段名称及字段描述如表2-6所示。
表2-6 用户后台活跃 active_background
(7)用户评价的事件名称为comment,产生的日志数据的具体字段名称及字段描述如表2-7所示。
表2-7 用户评价comment
(8)用户收藏的事件名称为favorites,产生的日志数据的具体字段名称及字段描述如表2-8所示。
表2-8 用户收藏favorites
(9)用户点赞的事件名称为praise,产生的日志数据的具体字段名称及字段描述如表2-9所示。
表2-9 用户点赞praise
续表
(10)产生的错误日志数据的具体字段名称及字段描述如表2-10所示。
表2-10 错误日志
3.数据生成模块之启动日志数据
启动日志,产生的日志数据的具体字段名称及字段描述如表2-11所示。
表2-11 启动日志
4.数据采集模块之生产数据
通过运行生产日志的jar包来模拟数据生成的过程,得到日志数据。
5.数据采集模块
数据采集模块主要采集并落盘到服务器文件夹中的日志数据,需要监控多个日志产生文件夹并能够做到断点续传,实现数据消费“at least once”语义,以及能够根据采集到的日志内容对日志进行分类采集落盘,发往不同的Kafka topic。Kafka作为一个消息中间件起到日志缓冲作用,避免同时发生的大量读/写请求造成HDFS性能下降,能对Kafka的日志生产采集过程进行实时监控,避免消费层Flume在落盘HDFS过程中产生大量小数据文件,而降低HDFS运行性能,并对落盘数据采取适当压缩措施,尽量节省存储空间,降低网络I/O。
业务数据采集要求按照业务数据库表结构在数据仓库中同步建表,并且根据业务数据库表性质指定对应的同步策略,进行合理的关系建模和维度建模。
2.2.2 数据仓库需求业务描述
1.数据分层建模
数据仓库被分为5层,描述如下。
● ODS(Operation Data Store)层:原始数据层,存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。
● DWD(Data Warehouse Detail)层:明细数据层,结构和粒度与ODS层保持一致,对ODS层的数据进行清洗(去除空值、脏数据、超过极限范围的数据)。
● DWS(Data Warehouse Service)层:服务数据层,以DWD层的数据为基础,进行轻度汇总。一般聚集到以用户当日、设备当日、商家当日、商品当日等的粒度。在这层通常会以某一个维度为线索,组成跨主题的宽表,比如,由一个用户当日的签到数、收藏数、评价数、抽奖数、订阅数、点赞数、浏览商品数、添加购物车数、下单数、支付数、退款数及点击广告数组成的宽表。
● DWT(Data Warehouse Topic)层:主题数据层,按照主题对DWS层数据进行进一步聚合,构建每个主题的全量宽表。
● ADS(Application Data Store)层:数据应用层,也有人把这层称为APP层、DAL层、DM层等。面向实际的数据需求,以DWD层、DWS层和DWT层的数据为基础,组成各种统计报表,统计结果最终同步到关系型数据库,如MySQL,以供BI或应用系统查询使用。
读者需要按照命名规范合理建表。
2.需求实现
电商业务发展日益成熟,但是如果缺少精细化运营的意识和数据驱动的经验,那么发展将会陷入瓶颈。作为电商数据分析的重要工具——数据仓库的作用就是为运营人员和决策团队提供关键指标的分析数据。电商平台的数据分析主要关注五大关键数据指标,包括活跃用户量、转化、留存、复购、GMV(指成交金额),以及三大关键思路:商品运营、用户运营和产品运营。围绕这一原则,本项目中要求实现的主要需求如下。
● 当日、当周、当月的活跃设备数;
● 每日新增设备数;
● 沉默设备数;
● 本周回流设备数;
● 流失设备数;
● 流存率;
● 最近连续三周活跃设备数;
● 最近七天内连续三天活跃设备数;
● 每日活跃会员数;
● 每日新增会员数;
● 每日新增付费会员数;
● 每日总付费会员数;
● 总会员数;
● 会员活跃率;
● 会员付费率;
● 会员新鲜度;
● 用户行为漏斗分析;
● 商品销量排名;
● 商品收藏排名;
● 商品加入购物车排名;
● 商品退款率排名;
● 商品差评率排名;
● 每日下单信息统计;
● 每日支付信息统计;
● 复购率。
要求将全部需求实现的结果数据存储在ADS层,并且完成可用于工作调度的脚本,实现任务自动调度。
2.2.3 数据可视化业务描述
在MySQL中根据ADS层的结果数据创建对应的表,使用Sqoop工具定时将结果数据导出到MySQL中,并使用数据可视化工具对数据进行展示。