u采 采集 如何实现用户行为简介(一)_WHO_光明网

优采云 发布时间: 2021-06-09 04:07

  u采 采集 如何实现用户行为简介(一)_WHO_光明网

  用户行为简介

  用户行为分析的主要指标可以概括为:哪个用户做了什么操作,什么时候在什么地方做的,为什么做这些操作,用什么方法,用了多长时间等等问题,总结就是谁、何时、何地、什么、为什么、如何、何时。

  基于以上 5 个 Ws 和 2Hs,让我们讨论如何实现它们。

  WHO,首先需要x获取登录用户的个人信息。用户名、角色等

  WHEN,获取用户访问页面各个模块的时间、开始时间、结束时间等

  WHAT,获取用户登录页面后做了哪些操作,点击了哪些页面和模块等

  WHY,分析用户点击这些模块的目的是什么

  HOW,用户如何访问系统、网页、APP、小程序等

  HOW TIME,用户访问每个模块,浏览某个页面需要多长时间等

  以上就是我们需要获取的所有数据。只有获取到相关数据,才能分析用户的行为。

  用户行为数据采集

  

  埋点

  埋点一般分为非埋点和代码埋点。这两者各有优缺点,这里仅作简单介绍:

  全埋点是一种前端埋点方法。产品内嵌SDK,最统一的埋点,通过接口配置方法定义关键行为,埋点采集完成。这是前端埋点的方法之一。

  优点:

  缺点:

  作为前端埋点,自然会有一些弊端

  代码埋点,这也是我们目前使用的埋点方式。代码埋点分为前端代码埋点和后端代码埋点。前端埋点与全埋点类似,同样需要嵌入到SDK中。不同的是,对于每个事件行为,都需要调用SDK代码,传入必要的事件名称、属性参数等,然后发送到后台数据服务器。后端嵌入点通过后端模块调用SDK接口向后端服务器发送事件和属性。

  我们使用代码嵌入点,分为前端和后端。嵌入是一个特别重要的过程。它是数据的来源。如果数据来源有问题,那么数据本身就有问题,分析结果也就失去了意义。

  因为我负责日志检测,即埋点后事件日志的检测报警,并通知对应的埋点开发商、运营商、产品方,所以在里面遇到了很多坑,大部分他们是关于过程的。

  事件属性有一个元数据管理系统,业界的一些服务也有这个结构。一般先定义事件和属性,然后埋点。原因是需要检查事件日志数据。需要检查事件是否存在,属性是否缺失,数据是否正常等。

  遇到的坑:

  数据有误。这种情况很难被发现。需要在对经营产品的分析中找到。这也有点不舒服

  有了上面的想法,我们来谈谈实现的相关技术问题,以及如何实现用户行为分析。

  数据采集

  根据操作定义的嵌入点接口形式获取的用户访问日志数据,必须在后端和前端预先定义数据存储格式,即哪个字段内容是保存,嵌入的点数据需要按照约定的格式统一封装,便于存储和分析。

  以下数据采集神器Flume出现了。

  

  实时埋点数据采集一般有两种方法:

  直接触发的日志发送到指定的HTTP端口,写入Kafka,然后Flume消费Kafka到HDFS

  用户访问日志到磁盘,在对应主机上部署flume agent,将采集log目录下的文件发送到kafka,然后在云端部署flume消费kafka数据到HDFS

  那么Flume采集系统的建立就比较简单了,只需要两步:

  flume 配置模板:

  a1.sources = source1

a1.sinks = k1

a1.channels = c1

a1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource

a1.sources.source1.channels = c1

a1.sources.source1.kafka.bootstrap.servers = kafka-host1:port1,kafka-host2:port2...

a1.sources.source1.kafka.topics = flume-test

a1.sources.source1.kafka.consumer.group.id = flume-test-group

# Describe the sink

a1.sinks.k1.type = hdfs

a1.sinks.k1.hdfs.path = /tmp/flume/test-data

a1.sinks.k1.hdfs.fileType=DataStream

# Use a channel which buffers events in memory

a1.channels.c1.type = memory

a1.channels.c1.capacity = 100

a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel

a1.sources.source1.channels = c1

a1.sinks.k1.channel = c1

  ◆ ◆ ◆  ◆ ◆

麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用原价4.45折的预购价格购买,还是非常划算的:

点击下方小程序即可进入购买页面:

  数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

● 麟哥拼了!!!亲自出镜推荐自己新书《数据分析师求职面试指南》● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜

● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗点击阅读原文,即可参与当当4.45折购书活动

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线