基于bitmap实现用户画像的标签圈人功能

本文探讨了在用户画像系统中基于bitmap实现标签圈人的方法。通过将标签分为离散枚举和连续数值两类,讨论了如何存储和处理这两种类型的标签。在面对大量用户和标签时,提出使用bitmap来优化存储和查询效率,同时解决了数值型标签的区间查询问题。通过二进制表示和组合bitmap,进一步减少了所需的存储空间并提升了查询性能。
摘要由CSDN通过智能技术生成

用户画像系统中有一个很重要的功能点: 基于标签圈人。这里有个很核心的概念,什么是标签?

标签是简化用户表示的一种思维方式。 刻画用户的标签越多,用户画像就越立体。 比如:
90后,码农,宅男 3个标签就刻画了一类人。标签类似于戏曲中的脸谱来表现人物的性格和特征。

标签有哪些类型呢?

枚举类标签: 描述性别,地理位置。这类标签取值通常是可枚举出来的。
时间类标签: 描述业务触达和流失时间信息。 注: 时间类标签可存储成数值。
数值类标签: 比如账户金额,积分数量等。

所以本质上,标签只有两种: 离散枚举和连续数值。

有了标签后,如何在计算机中建模存储呢?

最简单最直观的方式就是设置大宽表,即每个标签一个字段。 通常一个小型的画像系统,有几百个标签足够。所以对于大部分场景宽表足够简单可依赖。

宽表一般存储在Hive中,出于性能考虑,会存储到Impala中。当数据量较大时,Impala也一般无法满足查询的性能需求。这是因为Impala没有索引,每次查询都是扫表。所以,为了能够利用索引提升性能,大宽表一般会从Impala转存到Elasticsearch中。

当一个用户Id附着成百上千个标签,按ES存储方式,会相当耗费存储资源,导入数据到ES也会成为性能瓶颈。 所以变通的方案是将所有的标签存储到ES的一个array字段中。但本质上,还是大宽表的方案。

大宽表的方案最大的问题: 新增标签时间成本太大,所以画像系统基本是T+1的实效性。 如果对响应时间没有苛刻的要求,基于Hadoop生态的ad hoc查询引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值