0 架构
1.数据来源 1.1 用户行为数据 用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。
我们的日志结构大致可分为两类,一是普通页面埋点日志,二是启动日志。
普通页面日志结构如下,每条日志包含了,当前页面的页面信息,所有事件(动作)、所有曝光信息以及错误信息。除此之外,还包含了一系列公共信息,包括设备信息,地理位置,应用信息等,即下边的common字段。
启动日志结构相对简单,主要包含公共信息,启动信息和错误信息。
1.2 业务数据 就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据。 业务数据通常存储在MySQL、Oracle等数据库中。
总共47张表,选了27张业务表
2 数据采集 1 用户行为数据
jar-》log(日志服务器)-》flume-》kafka-》flume-》hdfs
2 业务数据
jar-》mysql-》sqoop-》hdfs
3.ODS hdfs(ori)-》hdfs(ods)
1 用户行为数据 1张表,topic_log -> ods_log
a.建表
就一个字段”line“
b 分区
首日,每日都是全量
c .数据装载
2 业务数据 27张表
0 整体
b 同步
c .数据装载
1.活动信息表
activity_info -> ods_activity_info
a 建表
少了个“activity_desc”,多了”dt”
b 同步
首日,每日都是全量
c .数据装载
4.DIM hdfs(ods)-》hdfs(dim)
构建6张维度表
1 商品维度表
a 建表
b 分区
首日,每日都是全量
c 数据装载
2 优惠券维度表
3 活动维度表
4 地区维度表
b 分区
地区维度表数据相对稳定,变化概率较低,故无需每日装载,首日全量
5 时间维度表
b 分区
通常情况下,时间维度表的数据并不是来自于业务系统,而是手动写入,并且时间维度表数据具有可预见性,无须每日导入,一般首日可一次性导入一年的数据
c 数据装载
1)创建临时表tmp_dim_date_info
2)将数据文件上传到HFDS上临时表指定路径/warehouse/gmall/tmp/tmp_dim_date_info/
3)执行以下语句将其导入时间维度表
1 insert overwrite table dim_date_info select * from tmp_dim_date_info;
6 用户维度表
b 分区
拉链表
https://cloud.tencent.com/developer/article/1752848#
c 数据装载
5.DWD hdfs(ods)-》hdfs(dwd)
1 用户行为日志 0 日志数据拆解
ods_log由两部分构成,分别为页面日志和启动日志,拆解成5张表
1 启动日志表
b 分区
首日,每日全量
c 数据装载
2 页面日志表
3 动作日志表
4 曝光日志表
5 错误日志表
2 业务数据 1 评价事实表(事务型事实表)
b 分区
c 数据装载
首日,动态分区;每日,静态分区
2 订单明细事实表(事务型事实表)
3 退单事实表(事务型事实表)
4 加购事实表(周期型快照事实表)
b 分区
c 数据加载
5 收藏事实表(周期型快照事实表)
6 优惠券领用事实表(累积型快照事实表)
b 分区
c 数据加载
(1)首日
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 insert overwrite table dwd_coupon_use partition(dt) select id, coupon_id, user_id, order_id, coupon_status, get_time, using_time, used_time, expire_time, coalesce(date_format(used_time,'yyyy-MM-dd'),date_format(expire_time,'yyyy-MM-dd'),'9999-99-99') from ods_coupon_use where dt='2020-06-14';
(2)每日
7 支付事实表(累积型快照事实表)
8 退款事实表(累积型快照事实表)
9 订单事实表(累积型快照事实表)
6.DWS hdfs(dwd)-》hdfs(dws)
0 整体
b 分区
c 数据装载
1 访客主题
2 用户主题
3 商品主题
4 优惠券主题
5 活动主题
6 地区主题
7.DWT hdfs(dws)-》hdfs(DWT)
0 整体
c 数据装载
只保留当天和前一天的分区,过时的需要清理掉i
1 访客主题
2 用户主题
3 商品主题
4 优惠券主题
5 活动主题
6 地区主题
8.ADS hdfs(DWT)-》hdfs(ADS)-》mysql
1 访客主题 1 访客统计
a 建表
指标
说明
对应字段
访客数
统计访问人数
uv_count
页面停留时长
统计所有页面访问记录总时长,以秒为单位
duration_sec
平均页面停留时长
统计每个会话平均停留时长,以秒为单位
avg_duration_sec
页面浏览总数
统计所有页面访问记录总数
page_count
平均页面浏览数
统计每个会话平均浏览页面数
avg_page_count
会话总数
统计会话总数
sv_count
跳出数
统计只浏览一个页面的会话个数
bounce_count
跳出率
只有一个页面的会话的比例
bounce_rate
b 分区
c 数据装载
第一步:对所有页面访问记录进行会话的划分。
第二步:统计每个会话的浏览时长和浏览页面数。
第三步:统计上述各指标。
2 路径分析
用户访问路径的可视化通常使用桑基图
2 用户主题 3 商品主题 4 订单主题 5 优惠券主题 6 活动主题 9.Azkaban全流程调度
就是将原来写的脚本文件串起来