尚硅谷数据仓库实战之1项目需求及架构设计

尚硅谷数据仓库实战之1项目需求及架构设计,第1张

尚硅谷数据仓库实战之1项目需求及架构设计

尚硅谷数据仓库实战之1项目需求及架构设计
  • 第2章 项目需求及架构设计
    • 需求分析
    • 项目框架
      • 技术选型
      • 数据流程设计
      • 框架版本选型
      • 服务器选型
      • 集群规模
      • 集群资源规划设计
  • 第3章 数据生成模块
    • 目标数据
      • 页面
      • 事件
      • 曝光
      • 启动
      • 错误
    • 数据埋点
      • 主流埋点方式(了解)
      • 埋点数据上报时机
      • 埋点数据日志结构

数仓笔记

数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS

尚硅谷数据仓库实战之1项目需求及架构设计

尚硅谷数据仓库实战之2数仓分层+维度建模

尚硅谷数据仓库实战之3数仓搭建

尚硅谷数据仓库4.0视频教程

B站直达:2021新版电商数仓V4.0丨大数据数据仓库项目实战
百度网盘:https://pan.baidu.com/s/1FGUb8X0Wx7IWAmKXBRwVFg ,提取码:yyds
阿里云盘:https://www.aliyundrive.com/s/F2FuMVePj92 ,提取码:335o

第2章 项目需求及架构设计 需求分析
  • 用户行为数据采集平台搭建
  • 业务数据采集平台搭建
  • 数据仓库维度建模
  • 业务埋点
  • 即席查询工具,随时进行指标分析
  • 集群监控,异常报警
  • 元数据管理
  • 质量监控
  • 权限管理
项目框架 技术选型

考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、维护成本、总成本运算

相关技术列举:

数据流程设计

根据需求选择合适的技术,设计规划具体的数据仓库架构流程

框架版本选型

尚硅谷测试稳定适配的版本

服务器选型

集群规模

集群资源规划设计

在企业中通常会搭建一套生产集群和一套测试集群。生产集群运行生产任务,测试集群用于上线前代码编写和测试。

1)生产集群

(1)消耗内存的分开

(2)数据传输数据比较紧密的放在一起(Kafka 、Zookeeper)

(3)客户端尽量放在一到两台服务器上,方便外部访问

(4)有依赖关系的尽量放到同一台服务器(例如:Hive和Azkaban Executor)
12345678910nnnndndndndndndndndnrmrmnmnmnmnmnmnmnmnmzkzkzkkafkakafkakafkaFlumeFlumeflumeHbaseHbaseHbasehivehivemysqlmysqlsparksparkAzkabanAzkabanESES

2)测试集群服务器规划

服务名称子服务服务器hadoop102服务器hadoop103服务器hadoop104HDFSNameNode√DataNode√√√SecondaryNameNode√YarnNodeManager√√√Resourcemanager√ZookeeperZookeeper Server√√√Flume(采集日志)Flume√√KafkaKafka√√√Flume(消费Kafka)Flume√HiveHive√MySQLMySQL√SqoopSqoop√PrestoCoordinator√Worker√√AzkabanAzkabanWebServer√AzkabanExecutorServer√Spark√Kylin√HbaseHMaster√HRegionServer√√√Superset√Atlas√SolrJar√服务数总计1988 第3章 数据生成模块 目标数据

我们要收集和分析的数据主要包括页面数据、事件数据、曝光数据、启动数据和错误数据。

页面

页面数据主要记录一个页面的用户访问情况,包括访问时间、停留时间、页面路径等信息。

字段名称字段描述page_id页面idhome(“首页”),category(“分类页”),discovery(“发现页”),top_n(“热门排行”),favor(“收藏页”),search(“搜索页”),good_list(“商品列表页”),good_detail(“商品详情”),good_spec(“商品规格”),comment(“评价”),comment_done(“评价完成”),comment_list(“评价列表”),cart(“购物车”),trade(“下单结算”),payment(“支付页面”),payment_done(“支付完成”),orders_all(“全部订单”),orders_unpaid(“订单待支付”),orders_undelivered(“订单待发货”),orders_unreceipted(“订单待收货”),orders_wait_comment(“订单待评价”),mine(“我的”),activity(“活动”),login(“登录”),register(“注册”);last_page_id上页idpage_item_type页面对象类型sku_id(“商品skuId”),keyword(“搜索关键词”),sku_ids(“多个商品skuId”),activity_id(“活动id”),coupon_id(“购物券id”);page_item页面对象idsourceType页面来源类型promotion(“商品推广”),recommend(“算法推荐商品”),query(“查询结果商品”),activity(“促销活动”);during_time停留时间(毫秒)ts跳入时间 事件

事件数据主要记录应用内一个具体 *** 作行为,包括 *** 作类型、 *** 作对象、 *** 作对象描述等信息。

字段名称字段描述action_id动作idfavor_add(“添加收藏”),favor_canel(“取消收藏”),cart_add(“添加购物车”),cart_remove(“删除购物车”),cart_add_num(“增加购物车商品数量”),cart_minus_num(“减少购物车商品数量”),trade_add_address(“增加收货地址”),get_coupon(“领取优惠券”);注:对于下单、支付等业务数据,可从业务数据库获取。item_type动作目标类型sku_id(“商品”),coupon_id(“购物券”);item动作目标idts动作时间 曝光

曝光数据主要记录页面所曝光的内容,包括曝光对象,曝光类型等信息。

字段名称字段描述displayType曝光类型promotion(“商品推广”),recommend(“算法推荐商品”),query(“查询结果商品”),activity(“促销活动”);item_type曝光对象类型sku_id(“商品skuId”),activity_id(“活动id”);item曝光对象idorder曝光顺序 启动

启动数据记录应用的启动信息。

字段名称字段描述entry启动入口icon(“图标”),notification(“通知”),install(“安装后启动”);loading_time启动加载时间open_ad_id开屏广告idopen_ad_ms广告播放时间open_ad_skip_ms用户跳过广告时间ts启动时间 错误

错误数据记录应用使用

过程中的错误信息,包括错误编号及错误信息。

字段名称字段描述error_code错误码msg错误信息 数据埋点 主流埋点方式(了解)

目前主流的埋点方式,有代码埋点(前端/后端)、可视化埋点、全埋点三种。

***代码埋点***是通过调用埋点SDK函数,在需要埋点的业务逻辑功能位置调用接口,上报埋点数据。例如,我们对页面中的某个按钮埋点后,当这个按钮被点击时,可以在这个按钮对应的 onClick 函数里面调用SDK提供的数据发送接口,来发送数据。

可视化埋点只需要研发人员集成采集 SDK,不需要写埋点代码,业务人员就可以通过访问分析平台的“圈选”功能,来“圈”出需要对用户行为进行捕捉的控件,并对该事件进行命名。圈选完毕后,这些配置会同步到各个用户的终端上,由采集 SDK 按照圈选的配置自动进行用户行为数据的采集和发送。

***全埋点***是通过在产品中嵌入SDK,前端自动采集页面上的全部用户行为事件,上报埋点数据,相当于做了一个统一的埋点。然后再通过界面配置哪些数据需要在系统里面进行分析。

埋点数据上报时机

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

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

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

本次项目采用方式一埋点。

埋点数据日志结构

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

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

(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

   "item_type": "sku_id",    --目标类型

   "ts": 1585744376605      --动作时间戳

  }

 ],

 "displays": [

  {

   "displayType": "query",     -- 曝光类型

   "item": "3",           -- 曝光对象id

   "item_type": "sku_id",     -- 曝光对象类型

   "order": 1,           --出现顺序

   "pos_id": 2            --曝光位置

  },

  {

   "displayType": "promotion",

   "item": "6",

   "item_type": "sku_id",

   "order": 2, 

   "pos_id": 1

  }

 ],

 "page": {            --页面信息

  "during_time": 7648,     -- 持续时间毫秒

  "item": "3",          -- 目标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手机图标  notice 通知  install 安装后启动

  "loading_time": 18803,  --启动加载时间

  "open_ad_id": 7,     --广告页ID

  "open_ad_ms": 3449,   -- 广告总共播放时间

  "open_ad_skip_ms": 1989  -- 用户跳过广告时点

 },

"err":{           --错误

"error_code": "1234",    --错误码

  "msg": "***********"    --错误信息

},

 "ts": 1585744304000

}
​```xxxxxxxxxx { "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手机图标  notice 通知  install 安装后启动  "loading_time": 18803,  --启动加载时间  "open_ad_id": 7,     --广告页ID  "open_ad_ms": 3449,   -- 广告总共播放时间  "open_ad_skip_ms": 1989  -- 用户跳过广告时点 },"err":{           --错误"error_code": "1234",    --错误码  "msg": "***********"    --错误信息}, "ts": 1585744304000}

本文由博客一文多发平台 OpenWrite 发布!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5635237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存