当前位置:   article > 正文

详细离线数仓_设备主题在离线数仓中的对应的表

设备主题在离线数仓中的对应的表

项目简介

我们做的这个是一个离线数仓

主要功能是收集用户的操作信息并对其进行过滤清洗等操作最后得到需求的指标信息

里面主要设涉及到的有sqoop,kafka。flume,hadoop,hive等工具
项目流程是从数据源获取到日志和业务行为两中数据

日志数据通过反向代理罗盘到日志服务器,志文件然后发送到hdfs上

Flume可以通过拦截器对数据进行一次过滤

业务数据会直接生成在mysql数据库中通过sqoop发送到hdfs上

我们通过hive对数据进行分层处理

共五层分别是ods,dwd,dws,dwt,还有ads层

Ods是原始数据层获取的数据偶
dwd是需要做的是数据清洗

Dws根据日期组成宽表

Dwt则是根据主题组成宽表

Ads是实现指标的地方(指标的话有日周月活跃,流失回流连续登录,topn等等                                                                                   

再把实现好的指标发送保存sqoop到mysql通过可视化页面进行展示

--------------------------详细流程-----------------------------

我的的数据主要分为两种一种日志数据另一种是业务数据

日志数据主要包括页面数据事件数据、曝光数据、启动数据和错误数据。

获取到数据我们会对其进行埋点

埋点主要有代码埋点(前端/后端)、可视化埋点全埋点三种

这里我们对代码进行埋点

们的日志结构大致可分为两类,一是普通页面埋点日志,二是启动日志。

普通页面日志结构如下,每条日志包含了,当前页面的页面信息,所有事件(动作)、所有曝光信息以及错误信息。除此之外,还包含了一系列公共信息,包括设备信息,地理位置,应用信息等,即下边的common字段。

启动日志结构相对简单,主要包含公共信息,启动信息和错误信息。

 埋点数据上报时机

埋点数据上报时机包括两种方式。

方式一,在离开该页面时,上传在这个页面发生的所有事情(页面、事件、曝光、错误等)。优点,批处理,减少了服务器接收数据压力。缺点,不是特别及时。

方式二,每个事件、动作、错误等,产生后,立即发送。优点,响应及时。缺点,对服务器接收数据压力比较大

数据有了之后我们会通过flume’进行采集

这里采用的是两层flume嵌套一层kafka的方式

大致流程是第一层flume获取数据在通过kafkach发送给下层flume进行处理

数据有第一层flume的scoue进行获取后会发送kafkach这中间会有层拦截器

这里的拦截器启到的做作用是对数据过滤,会吧转换不了json的数据抛弃

Kafkach会把数据发送到kafka

后面的flum会获取kafka中的数据并对其在进行一次拦截

这里的拦截器的作用是把输出到hdfs的时间从原来的系统改时间修改成为数据实际时间

避免了数据的零点漂移问题

这个拦截后会把数据发送到hdfs

日志数据的传输完   毕

业务的数据传输相比于日志的更容易理解

业务主要分为两部分

第一部分就是将数据导入mysql第二部分则是直接使用sqoop将数据传输到hdfs

数据的传输部分就结束了

下面就到了数据的分层阶段我们使用的工具是hive

分层是为了将复杂的任务分成多层来完成的,每层只要解决少量问题这样方便定位,

减少重复开发,通过中间层的数据能够极大的减少重复计算,增加计算的复用性

隔离原始数据,能够使真实数据与统计的数据解耦开

我们将数据分为五层分别是ods,dwd,dws,dwt,ads五层、

Ods层不会对数据作任何的修改起到一个备份的作用

       采用lzo压缩,减少磁盘的储存空间

       重建分区避免后需的全局扫描

创建外部表,避免不必要的损失

ods分为日志和业务两层

日志的数据只有ods_log一张表,

业务则需要把mysql中的全部导入

建表和导入数据我们选择是有脚本进行处理

Dwd这一层需要构建维度建模,我们选用的是星型模型

       建模分为为四个步骤:选择业务—生命粒度—确认维度—确认事实

       这里需要根据需求选择业务我们选的有下单,支付,退款,物流等业务

       粒度是数据的细化程度这个最好选择的是最小粒度,如过说dwd层中只每周或者是每月,那么当初出现统计每天的需求的话就没有办法了,所以我们应选择最小粒度

       确认维度就是确认后期需要用到维度,我们这个项目的维度主要有时间维度,地区维度和用户维度,

       确认事实 这个指的就是下单的金额下单次数等等这些度量值
这一层的数据也是有日志业务两部分组成

日志在这一层进行了过滤拆分最后划分成了五张表启动,页面,动作,曝光,错误等五张表

业务在这一层进行的就是维度的退化,减少后续大量Join操作

例如 商品维度表主要是将商品表SKU表、商品一级分类、商品二级分类、商品三级分类、商品品牌表和商品SPU表退化为商品表。

Dws这一层是统计各个主体对象的当天行为,是用于服务dwt的主题宽表

       对数据根据每天来进行一个整合的宽表

       这里的宽表有每日设备行为、每日会员行为、每日商品行为、每日活动统计、每日地区统计。

Dwt层是以dws为基础再次对数据进行整合,主要以主题进行

这里的宽表有,主题设备行为、主题会员行为、主题商品行为、主题活动统计、主题地区统计。

Ads是统计指标层

     这里的指标有日周月活,每日新增,漏斗等几十个指标、

       我在这里挑几个说一下

日周月活跃就是球这个时间段的设备活跃数

每日新增是求今天新增的用户的个数

漏斗分统计“浏览首页->浏览商品详情页->加入购物车->下单->支付”的转化率

统计各个行为的人数,然后计算比值。

Ads的数据整理完之后会发送到musql的数据库进行可视化的处理

我们这里使用sqoop的方式将hdfs的数据发送给mysql

可视化使用的是prowBI从mysql中获取数据进行报表处理

我们可系选择柱状,饼状等这些图进行可视化展示

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/396861
推荐阅读
相关标签
  

闽ICP备14008679号