个人网站做影视,如何做好网站开发项目需求分析,网站地图导出怎么做,上海正规网站制作价格前言 今天开始重新回顾电商数仓项目#xff0c;结合《阿里巴巴大数据之路》和尚硅谷的《剑指大数据——企业级电商数据仓库项目实战 精华版》来进行第二次深入理解学习。之前第一次学习数仓#xff0c;虽然尽量放慢速度力求深入理解#xff0c;但是不可能一遍掌握#xff0…前言 今天开始重新回顾电商数仓项目结合《阿里巴巴大数据之路》和尚硅谷的《剑指大数据——企业级电商数据仓库项目实战 精华版》来进行第二次深入理解学习。之前第一次学习数仓虽然尽量放慢速度力求深入理解但是不可能一遍掌握尤其是关于数仓建模那需要实打实的经验 好在最近发现了这两本好书但是发现纸质版虽然很好但是标注那么多零碎的知识点复习起来还是不够直观所以这里用博客的形式把我第二遍学习中学到的东西记录下来只针对我的问题对于一些理论比如基础的工具使用一些专业术语不多废话最多一句带过。 两本书对整个数仓的开发步骤基本是一致的所以学习的时候会结合着一起学互相弥补各自的不足《阿里巴巴大数据之路》理论非常丰富《剑指大数据—企业级电商数仓实战》更加贴近实战。 文章的结构我会按照《阿里巴巴大数据之路》来分层每个章节总结到博客应该又是一篇万字长文。
1、日志采集 电商项目的日志采集主要分为两部分浏览器Web 端和无线客户端APP、小程序阿里巴巴对于这两部分日志的采集方案分别为 Aplus.js浏览器和 UserTrack APP。
1.1、浏览器的页面日志采集
浏览器页面的日志采集可以分为两类
页面浏览日志 也就是一个网页被加载的次数因为只有网页被加载成功时才会被记录为日志。页面浏览日志有两大基本指标PV页面浏览量和 UV用户访客数。
页面交互日志 即捕获用户的行为操作通过采集用户的行为数据以便量化获知用户的兴趣点和体验优化点。
1.1.1、浏览器的浏览日志采集流程
1️⃣用户在浏览器地址栏输入一个请求地址2️⃣浏览器发送一个 http 请求 一个标准的 http 请求分为 3 部分 请求行请求方法、URL、http协议版本请求头附加信息比如 Cookie请求体可选一般为空3️⃣服务器接收并响应请求 一个标标准的 http 相应也分为 3 部分 状态行状态码比如 200响应头附加信息比如 Cookie响应体非空比如 json、html、image、text、mp4等4️⃣浏览器接受响应内容并渲染 日志采集的动作发生在上面的第 4 步也就是在浏览器解析响应的页面的时候。所以实现日志采集的思路就是在 HTML 文档合适的位置插入一个日志采集节点比如一段 js 脚本当浏览器解析到这个节点的时候将自动触发发送一个特定的 http 请求到日志采集服务器。
具体采集日志的过程如下
1️⃣客户端日志采集 由植入到 HTML 文档中的一段 JS 脚本来执行在执行时采集当前页面参数浏览器行为的上下文信息比如该页面的上一页以及一些运行换信息比如当前浏览器的版本、屏幕大小、操作系统信息具体的采集脚本可以是提前写入到 HTML 中也可以是在返回响应时动态植入。2️⃣客户端日志发送 采集脚本执行时会向日志服务器发送起一个 http 请求将采集到的日志发送到日志服务器。采集到的日志信息一般以 URL 参数的形式放在 HTTP 请求行中。3️⃣服务器端日志收集 日志服务器接收到客户端发来的日志请求后一般会立即返回一个请求成功的响应防止客户端页面长时间等待。同时日志服务器会把该日志的内容写入一个缓冲区内完成对这条日志的收集。4️⃣服务器端日志解析存档 日志缓冲区中的日志会被顺序读出并解析解析出的数据会被转存到标准的日志文件而且如果有实时分析需求的话会被注入到实时消息通道供其它后端程序读取并加工。
经过格式化的日志为后面日志的加工和计算得以顺利进行打下了基础。
1.1.2、页面的交互日志采集 PV 日志解决了页面流量和流量来源统计的问题但是随着业务的发展仅了解用户访问的页面和路径已经远远不能满足用户细分研究的需求。很多场景下更需要了解用户访问某个页面时的互动行为数据比如鼠标焦点的变化。所以这些行为无法通过常规的 PV 日志采集方法解决。 交互日志采集和浏览日志采集完全不同交互日志千变万化呈现出高度自定义的业务特征但是阿里巴巴有自己的一套专门用来采集交互日志的技术方案也叫“黄金令箭”。这里丢这个技术不多介绍毕竟书里也没有过多透露关于这个技术的细节大概流程就是
1️⃣业务方比如程序员通过这套系统“黄金令箭”将具体的业务场景下的交互采集点注册到系统当中系统会自动生成与之对应的交互日志采集模板。2️⃣业务方将采集模板植入到目标页面并将采集代码与需要监测的交互行为进行绑定。3️⃣当用户在页面交互触发制定行为时采集代码会被触发执行并通过 HTTP 请求发送到日志服务器。4️⃣日志服务器接收到日志后将数据进行转存。 之后业务方就可以对这部分行为数据根据业务需求进行解析处理并可以与浏览数据进关联运算。
1.1.3、页面日志的服务器端清洗和预处理 经过上面采集处理后的数据一般并不会直接提供给下游使用基于下面的 4 个原因在时效性宽松的情况下还需要对数据进行一些离线预处理。
1️⃣识别流量攻击网络爬虫和流量作弊2️⃣数据项补正 对日志中一些公共并且重要的字段取值归一将数据特征缩放到一个特定的范围当中比如 [ 0,1 ] 以消除不同量纲和量纲单位对数据分析结果的影响、标准化处理或反向补正根据新日志对旧日志中的个别数据项做回补比如用户登录后对用户登录之前的页面做身份信息的回补。3️⃣无效数据剔除 采集到的数据难免会存在一些无意义的数据比如因为业务变更、采集配置不当或者冗余的数据会消耗存储和算力。所以需要定时检查采集配置并按照配置对无效数据进行剔除。4️⃣ 日志隔离分发 考虑到数据安全一般会对一些日志进入到公共环境之前做隔离。 至此页面日志浏览日志和行为日志的采集流程就算完成了此时的日志已经具备了结构化或半结构的特征可以被关系型数据库装载和使用了Hive 当然也可以。
1.2、客户端的日志采集 移动端的数据采集一方面是为了服务于开发者帮助他们进行一些数据分析设备信息、用户行为信息另一方面是为了对 APP 进行不断的优化提升用户体验。 浏览器的网页日志是使用 JS 脚本来采集的而这里的移动客户端的日志采集使用采集SDK 来完成。移动端的日志采集根据不同的用户行为分为不同的事件常用的包括页面事件页面浏览和控件点击事件页面交互等。 阿里巴巴对于移动端的日志采集使用的是 UserTrack 简称 UT。
1.2.1、页面事件 每条页面事件日志记录三类信息
设备和用户基本信息被访问页面的信息比如商品id、所属店铺访问的基本路径页面来源、来源的来源 对于页面事件有的采集 SDK 选择在页面创建时就发送日志。而阿里巴巴的 UT 它提供了两个接口分别在页面展现和页面退出时调用。当进入该店铺详情页时调用页面展现的接口该接口会记录一些页面进入时的状态信息但是不发送日志。当从该店铺详情页离开时比如退出手机淘宝或者返回上一页这是才会调用页面退出接口该接口会发送日志。 除了页面展现和退出这两个基础接口外UT 还提供了页面扩展信息的接口在页面离开前该接口会给页面添加一些扩展信息比如店铺ID、店铺类别天猫/淘宝等。 上面的三个接口必须配合使用其中页面展现和退出必须成对使用而页面扩展接口必须在这两个接口使用的前提下使用。
日志发送的时机 对于网页浏览日志基本都是页面加载之后当浏览器解析到相关的日志发送JS脚本就会自动执行发送。而对于移动端日志发送则是在页面离开后发送因为移动端可以对页面停留时长进行一个准确的计算。
用户行为路径还原 在很多场景下需要采集更多的信息来减少计算分析的成本UT 针对这种情况提功力透传参数的功能。所谓透传参数就是把当前页面的某些信息传递到下一个或者下下一个页面的日志中。比如我搜索 手机 之后给我推荐了很多商品我点进去一个商品之后我的搜索词也应该被记录到该商品日志当中去。
1.2.2、控件点击和其它事件 和网页交互日志一样交互类行为呈现出高度自定义的业务特征。对于控件点击事件它首先也会记录基本的设备和用户信息此外它还会记录页面名称、控件名称、控件的业务参数等。 除此之外UT 还提供了一些默认的日志采集方法比如自动捕获应用崩溃应用的退出、页面的前后台切换等。
1.2.3、特殊场景
日志聚合 上面所有的场景页面事件和交互事件都是一个行为产生一条日志比如一次浏览、一次点击。对于用户量很大的公司为了平衡日志的大小减少流量消耗、日志服务器的压力、网络传输压力等采集 SDK 提供了聚合功能。对于一下曝光或者性能技术类的日志可以选择对这类日志进行一个聚合以减少对日志采集服务器的请求量适当减小日志的大小。比如对于曝光日志手机一次滚动屏幕可能会触发几十个商品的曝光我们总不可能让它生成几十个曝光日志所以采集 SDK 提供了本地聚合的功能在客户端对这类日志进行聚合然后再去发送到日志采集服务器。
1.2.4、设备标识 这里简单介绍设备标识用来标识用户的唯一性。对于 UV 指标可以通过用户 ID 来进行唯一标识但是很多网页或软件并不要求用户必须登录所以就难以标识日志的来源。对于这种情况 PC 端可以通过 Cookie 来解决但是移动端就难以解决了。 对于单APP的公司设备标识并不是非要攻克的难题但是对于阿里巴巴有大量APP的大公司唯一标识就必须解决。阿里巴巴使用的是 UTDID 它是通过特定的算法来生成的大部分情况下可以唯一标识一个设备。
1.2.5、日志传输 移动端的日志传输一般先存储在客户端本地然后伺机上传启动后、使用过程中 、切换后台时。触发上传日志的时机并不是单纯依靠间隔时间还要结合日志的大小以及上传时网络的耗时不断调整上传机制。 移动端上传日志是向日志服务器发送 POST 请求当天的日志会被存储到当天的日志文件中。
之后当这些日志需要被下游使用时一般会把日志放到消息队列比如 Kafka 阿里巴巴用的是 TimeTunel供下游消费者比如 Hadoop 等阿里巴巴用的是 MaxCompute消费。
总结 日志采集这一部分主要是《阿里巴巴大数据之路》中专门拎出来讲学完之后确实对数据采集的过程有了更深刻的印象和理解。