当前位置: 首页 > news >正文

十、电商数仓用户行为采集平台

一、数据仓库概述

数据仓库(Data Warehouse)是为企业制定决策、提供数据支持的系统。其输入数据通常包括三类:

数据类型说明存储位置
业务数据用户登录、下单、支付等事务处理产生的数据MySQL、Oracle 等数据库
用户行为数据通过埋点收集的页面浏览、点击、停留、评论等行为日志文件
爬虫数据通过技术手段获取的外部数据各类存储

本文聚焦于用户行为数据的采集,介绍如何通过埋点收集用户行为,并搭建采集平台将数据传输到日志服务器。

二、用户行为日志

2.1 埋点方式

目前主流的埋点方式包括:

埋点方式说明
代码埋点调用埋点 SDK 函数,在业务逻辑中手动上报数据
可视化埋点集成 SDK 后,业务人员通过"圈选"功能配置采集控件
全埋点嵌入 SDK 后自动采集全部用户行为,再通过界面配置分析范围

2.2 日志内容分类

本项目收集的用户行为日志主要包括五类:

日志类型记录内容
页面浏览记录访客对页面的浏览行为及环境信息
动作记录用户的业务操作行为(如点击、收藏、加购)
曝光记录页面元素的曝光行为(如商品曝光、广告曝光)
启动记录用户启动应用的行为及启动信息
错误记录用户使用过程中的报错信息

2.3 日志格式

日志结构分为两类:页面日志启动日志

2.3.1 页面日志

一条完整的页面日志包含:

  • 一个页面浏览记录
  • 若干动作记录(actions)
  • 若干曝光记录(displays)
  • 一个错误记录(err,可选)
  • 环境信息(common)
2.3.2 启动日志

一条完整的启动日志包含:

  • 一个启动记录(start)
  • 一个错误记录(err,可选)
  • 环境信息(common)

三、数据采集通道设计

3.1 采集链路

用户行为数据的采集链路为:

应用端 → 日志文件 → Flume → Kafka → HDFS/Hive/Flink
环节组件说明
日志生成应用端埋点采集用户行为,写入本地日志文件
日志采集Flume实时采集日志文件,发送到 Kafka
消息缓冲Kafka接收 Flume 发送的数据,提供缓冲
数据存储HDFS/Hive/Flink持久化存储,供离线分析,实时分析

3.2 Flume 配置方案

3.2.1 Source 选型:TailDirSource

选择 TailDirSource 的原因:

Source 类型特点是否推荐
TailDirSource支持断点续传、多目录监控✅ 推荐
ExecSource实时采集,但 Flume 停止时会丢数据❌ 不推荐
SpoolingDirectorySource支持断点续传,但只能监控目录⚠️ 可用

TailDirSource 是生产环境的首选,它解决了断点续传和多目录监控的问题。

3.2.2 Channel 选型:KafkaChannel

采用 KafkaChannel 的优势:

  • 省去 Sink 组件,直接写入 Kafka
  • 提高传输效率,减少一跳
  • 利用 Kafka 的高可靠和高吞吐特性
3.2.3 配置文件示例
# 定义组件 a1.sources = r1 a1.channels = c1 # 配置 Source:TailDirSource a1.sources.r1.type = TAILDIR a1.sources.r1.filegroups = f1 a1.sources.r1.filegroups.f1 = /opt/module/applog/log/app.* a1.sources.r1.positionFile = /opt/module/apache-flume-1.10.1-bin/taildir_position.json # 配置 Channel:KafkaChannel a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel a1.channels.c1.kafka.bootstrap.servers = hadoop1:9092,hadoop2:9092 a1.channels.c1.kafka.topic = topic_log a1.channels.c1.parseAsFlumeEvent = false # 组装 a1.sources.r1.channels = c1

关键配置说明:

配置项说明
filegroups.f1监控的日志文件路径,支持通配符
positionFile记录文件读取的位置,实现断点续传
parseAsFlumeEvent设为 false,不解析为 Flume Event 格式

3.3 日志校验拦截器

为保证数据质量,可配置拦截器对日志格式进行校验:

# 配置拦截器 a1.sources.r1.interceptors = i1 a1.sources.r1.interceptors.i1.type = com.atguigu.flume.interceptor.ETLInterceptor # 绑定拦截器 a1.sources.r1.interceptors = i1

拦截器的主要功能:

  • 校验日志是否为合法的 JSON 格式
  • 过滤不符合格式的脏数据
  • 统计日志采集的成功率和失败率

四、总结

用户行为采集平台的核心要点:

要点说明
埋点方式代码埋点、可视化埋点、全埋点
日志类型页面日志、启动日志
采集链路日志文件 → Flume → Kafka → HDFS
Source 选型TailDirSource(支持断点续传)
Channel 选型KafkaChannel(省去 Sink,提高效率)
数据校验通过拦截器校验 JSON 格式

这套采集方案具有高可靠、实时性强的特点,能够满足大规模用户行为数据的采集需求。

http://www.jsqmd.com/news/1175678/

相关文章:

  • 如何用CastXML将C/C++代码转换为可分析的XML结构?
  • STM32L021与ADS122U04高精度低功耗数据采集方案
  • 如何通过CC Switch深度链接协议快速配置AI助手?终极指南
  • 2026全品类灯饰哪家靠谱 消费认可度排行盘点 - 互联网科技品牌测评
  • 先看节点覆盖,再看空间落地:西安豪美装修工艺/施工工艺 - 子柔传媒
  • java中String类
  • Python的from import,抄不对,连库都给你整哭
  • 第三篇:MySQL误删数据恢复实战|Binlog2sql结合Python逆向解析,实现数据表精准回滚
  • 【AI Agent平台横向对比权威报告】:2024年Top 7平台性能、成本、可扩展性实测数据全公开(含LLM兼容性压测结果)
  • Havenlon|执行缝隙(八):从“我同意“到“它真的发生“,中间差了什么
  • Web Audio API 深度解析:如何构建高性能的浏览器音频处理系统?
  • macOS桌面歌词革命:LyricsX开源项目的技术实现与用户体验深度解析
  • 如何构建企业级数据可视化监控平台:XO的完整解决方案
  • 不止少儿AI教辅!带你重新认识深耕成人AIGC职教的小猿教育 - 新闻快传
  • 如何用开源AI知识管理平台重塑你的智能工作流
  • 亲身到店探访海口亨得利官方名表服务中心|详细官方热线及维修地址(2026年7月更新) - 亨得利官方
  • 2026年7月最新西安真力时官方售后联系电话与客户服务中心网点地址 - 亨得利官方服务中心
  • 欧米茄官方售后服务中心服务电话及地址实地考察报告+多信源验证(2026年7月最新) - 欧米茄服务中心
  • 生成式 UI 中的组件组合算法:将自然语言拆解为原子组件树的递归策略
  • 深度解析CC Switch常见故障:5步专业解决方案指南
  • Python依赖管理革命:3分钟用pip-chill清理你的requirements.txt文件
  • DisplayMagician终极指南:如何一键切换多显示器游戏设置
  • 终极Bloxstrap指南:5个技巧让你的Roblox体验焕然一新
  • 终极指南:为什么Voron Zero是桌面3D打印的最佳选择?
  • WebWalker安全最佳实践:保护LLM网页遍历过程中的数据安全
  • raf 在 Node.js 中的神奇应用:如何在没有浏览器的环境中使用动画帧?
  • 2026 年现阶段麻栗坡专业的果岭草草坪企业格局重塑与选型新思路,揭秘高手:果岭草草坪的秘密布局术 - 行业鉴选官
  • 2026生成式引擎优化(GEO)综合实力榜单:头部服务商深度评测 - 新闻快传
  • 2026年平洲翡翠定制TOP3盘点参考 - 互联网科技品牌测评
  • MCP(Model‑Context‑Protocol)整体架构