一、离线数仓—项目初步了解

本文详述了一个离线数仓项目的初步了解,涵盖数据采集、数据仓库设计、全流程调度和技术选型。数据采集涉及行为日志和业务数据,数据仓库包括ODS、DIM、DWD、DWS和ADS层的详细设计。技术选型包括Flume、DataX、Hive等,项目初期准备工作涉及Hadoop集群的搭建和相关软件安装。


一、项目初步了解
二、数据采集模块
     1.行为日志采集
     2.业务数据采集
          2.1 业务数据数据同步规划
          2.2 全量表同步实现
          2.3 增量表同步实现
          2.4 数据采集模块总结
三、数据仓库
     1.数据仓库设计
          1.1 指标体系分析
          1.2 数据仓库环境准备
     2.ODS层设计开发
     3.DIM层设计开发
          3.1 DIM层实现
     4.DWD层设计开发
          4.1 DWD层工具域事实表实现
          4.2 DWD层互动域事实表实现
          4.3 DWD层流量域事实表实现
          4.4 DWD层用户域事实表实现
          4.5 DWD层周期快照事实表实现
          4.6 DWD层数据装载脚本
     5.DWS层设计开发
          5.1 DWS层设计分析
          5.2 DWS层交易域汇总表的设计实现
          5.3 DWS层流量域汇总表设计实现
          5.4 DWS层交易域、用户域汇总表设计实现
          5.5 DWS层数据装载脚本
     6.ADS层设计实现
          6.1 ADS层用户主题需求的实现
          6.2 ADS层商品主题需求的实现
          6.3 ADS层交易主题需求的实现
          6.4 ADS层活动及优惠券主题需求的实现
          6.5 ADS层流量主题需求的实现
          6.6 ADS层数据装载脚本
     7.ADS层数据导出
四、全流程调度
     1.全流程调度实现


项目整体架构


上图是整个离线数仓的架构,先简单了解,之后对每一部分逐个说明。

技术选型

本离线数仓采用的技术如下:

  1. 数据采集传输:Flume、DataX、Maxwell、Kafka;
  2. 数据存储:MySQL、HDFS;
  3. 数据计算:Hive、Spark;
  4. 数据可视化:Superset;
  5. 任务调度:DolphinScheduler;

前期准备

  1. 三台服务器(虚拟机)安装Hadoop集群
  2. 集群安装JDK并配置环境变量
  3. 集群安装zookeeper;
  4. 集群安装Kafka;
  5. 集群安装Flume;

第一部分:数据生成

数据记录类型

主要包括以下数据类型:
1)页面浏览记录
主要记录了用户对一个页面的访问情况
在这里插入图片描述
2)动作记录
记录的是一个具体的操作行为
在这里插入图片描述
3)曝光记录
曝光指的是页面上展示出来的信息
在这里插入图片描述
4)启动记录
启动记录是用户启动应用的行为
在这里插入图片描述
5)错误记录
错误记录是指用户在使用过程中(上述四种情况下)的报错行为

用户行为日志格式

1、页面日志
页面日志,以页面浏览为单位,一个页面浏览记录,生成一个页面日志。一个完整的页面日志包括一个页面浏览记录,还有用户在浏览该页面所做的动作记录,该页面的曝光记录以及浏览该页面时发生的报错记录。最后还有一些通用的各种环境信息。例子如下:

{
  "common": {                  -- 公共信息
    "ar": "230000",              -- 地区编码
    "ba": "iPhone",              -- 手机品牌
    "ch": "Appstore",            -- 渠道
    "is_new": "1",              --是否首日使用,首次使用的当日,该字段值为1,过了24:00,该字段置为0。
	"md": "iPhone 8",            -- 手机型号
    "mid": "YXfhjAYH6As2z9Iq", -- 设备id
    "os": "iOS 13.2.9",          -- 操作系统
    "uid": "485",                 -- 会员id
    "vc": "v2.1.134"             -- app版本号
  },
"actions": [                     --动作(事件)  
    {
      "action_id": "favor_add",   --动作id(添加收藏)
      "item": "3",                   --目标id(添加的商品id为3)
      "item_type": "sku_id",       --目标类型(添加收藏的东西类型为商品)
      "ts": 1585744376605           --动作时间戳
    }
  ],
  "displays": [
    {
      "displayType": "query",        -- 曝光类型(通过查询曝光)
      "item": "3",              -- 曝光对象id(曝光的对象的id是3)
      "item_type": "sku_id",     -- 曝光对象类型(曝光的对象类型是商品)
      "order": 1,               --出现顺序(这个曝光的对象排在页面的第1个位置)
      "pos_id": 2              --曝光位置(曝光的对象的位置的id)(离谱,第一次出现)
    },
    {
      "displayType": "promotion",      --曝光类型(通过商品推广曝光)
      "item": "6",                   --曝光对象id(曝光的对象的id是6)
      "item_type": "sku_id",          --曝光对象类型(曝光的对象类型是商品)
      "order": 2, 
      "pos_id": 1
    },
    {
      "displayType": "promotion",
      "item": "9",
      "item_type": "sku_id",
      "order": 3, 
      "pos_id": 3
    },
    {
      "displayType": "recommend",       --曝光类型(通过“算法推荐商品”曝光)
      "item": "6",
      "item_type": "sku_id",
      "order": 4, 
      "pos_id": 2
    },
    {
      "displayType": "query ",
      "item": "6",
      "item_type": "sku_id",
      "order": 5, 
      "pos_id": 1
    }
  ],
  "page": {                       --页面信息
    "during_time": 7648,        -- 持续时间毫秒(用户在此页面停留了7648毫秒)
    "item": "3",                  -- 目标id(该商品商品详情页上的商品的id)
    "item_type": "sku_id",      -- 目标类型(该页面上是一个商品)
    "last_page_id": "login",    -- 上页类型(该页面的上一个页面是登录页面)
    "page_id": "good_detail",   -- 页面ID(该页面是一个商品详情页)
    "sourceType": "promotion"   -- 来源类型(用户通过“商品推广”进入的该页面)
  },
"err":{                     --错误
"error_code": "1234",      --错误码
    "msg": "***********"       --错误信息
},
  "ts": 1585744374423   --跳入时间戳
}

2、启动日志
启动日志格式主要包含公共信息、启动信息和错误信息,如下:

{
  "common": {
    "ar": "370000",
    "ba": "Honor",
    "ch": "wandoujia",
    "is_new": "1",
    "md": "Honor 20s",
    "mid": "eQF5boERMJFOujcp",
    "os": "Android 11.0",
    "uid": "76",
    "vc": "v2.1.134"
  },
  "start": {   
    "entry": "icon",         --启动入口(通过icon手机图标启动)
    "loading_time": 18803,  --启动加载时间
    "open_ad_id": 7,        --广告页ID
    "open_ad_ms": 3449,    -- 广告总共播放时间
    "open_ad_skip_ms": 1989   --  用户跳过广告时点
  },
"err":{                     --错误
"error_code": "1234",      --错误码
    "msg": "***********"       --错误信息
},
  "ts": 1585744304000
}

模拟数据

因为无法拿到真实的数据,这里采用模拟生成数据的方式,具体生成数据的过程省略。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值