赞
踩
用户画像与实时数据分析是互联网企业的数据核心。知乎数据赋能团队以 Apache Doris 为基础,基于云服务构建高响应、低成本、兼顾稳定性与灵活性的实时数据架构,同时支持实时业务分析、实时算法特征、用户画像三项核心业务流,显著提升对于时效性热点与潜力的感知力度与响应速度,大幅缩减运营、营销等业务场景中的人群定向成本,并对实时算法的准确率及业务核心指标带来明显增益。
关键词:数据仓库,Apache Doris,用户画像,实时数据
01前言
知乎业务中,随着各业务线业务的发展,逐渐对用户画像和实时数据这两部分的诉求越来越多。对用户画像方面,期望有更快、更准、更方便的人群筛选工具和方便的用户群体分析能力。对于实时数据方面,期望拥有可以实时响应的用户行为流,同时在算法特征、指标统计、业务外显等业务场景有愈来愈多的数据实时化的诉求。
在 2021 年 8 月,知乎平台团队成立数据赋能团队。针对历史实时数据需求无承接方的现象,已有用户画像系统无法满足多样的人群定向的现状,及业务方进一步人群分析的业务诉求,提出基础设施层选用Apache Doris作为实时数据仓库技术选型,业务工具层建设实时数据集成、实时数据调度、实时数据质量中心等系统,应用层建设实时数据应用和用户画像应用的方案。该方案针对性地解决了业务痛点,满足了业务诉求。
拆分当前业务主要在实时数据和用户画像两大部分有难点,共包含如下的三个方向目标:
1、实时业务数据
2、 实时算法特征
3、用户画像
本文就知乎平台的数据赋能团队,基于以上三个方向的目标,就这四个问题,来逐一介绍这方面的技术实践经验和心得体会:
1.1 名词解释
名词 / 缩写 | 描述 |
UBS | User Behavior System。知乎的实时用户行为系统。包含实时的用户行为流及相关的快查存储。 |
DMP | Data Management Platform。知乎的用户画像系统。包含人群筛选、人群分析等功能。 |
1.2 实时数据与用户画像与各业务的结合
02面临的挑战和痛点
针对当前业务目标,主要有以下几个具体要求。
1、有价值
1)如何通过实效性发现业务价值?
2)如何让用户画像的筛选和分析能力最大化?
2、 数据实效性
1)推荐页首屏浏览 6 条内容,如何在第二刷的时候就立即感知到最新的用户行为?
通过 UBS 建设提升实效性(下面介绍)
2)在推荐算法中,非常实时的特征推荐算法效果要比天级别更新特征的算法效果好很多,如何保证 10 分钟内算法受到特征变更?
通过实时数据系统与 Apache Doris配合共同建设,提升到 10 分钟内更新(下面介绍)
3、接口实时性
热点运营场景,期望用户画像服务能在秒级别快速筛选出大量人群,用户后续的推送等运营场景,如何解决?
通过用户画像系统与 Apache Doris 配合共同建设,提升人群筛选的速度(下面介绍)
4、复杂性
1)实时数据几乎没有 count、sum 需求。几乎都是复杂去重和多数据联合计算的情况。
以播放量为例。在启播、暂停、完播、心跳等多个条件下,会同时有多个点,要进行去重。同时基于视频回答、视频的关系和双作者联合创作的关系,需要叠加,同时保证在父子内容异常状态的情况下过滤其中部分播放行为。
2)人群分析业务,期望多角度、各维度进行人群关联计算,同时基于全部用户特征针对当前人群和对比人群进行 TGI 计算,筛选出显著特征,如何解决?
通过用户画像系统与 Apache Doris 配合共同建设,解决复杂的人群分析(下面介绍)
3)业务数据中有增 / 删 / 改逻辑,如何实时同步?
实时数据集成系统与 Apache Doris 配合共同建设,解决增 / 删 / 改逻辑(下面介绍)
4)明细数据异常发现滞后,异常发现后,需要针对性修正构建方式,及回溯数据修复,如何解决?
通过选择 Lambda 架构作为数据架构解决(下面介绍)
03实践及经验分享
3.1 整体业务架构
基于当前的业务,从顶层至底层进行了拆分。主要分为应用层、业务模型层、业务工具层、基础设施层。基于我们当前的业务形态,自上而下
3.2 实时数据的数据架构选型
解决当前问题的数据架构,一般有 Lambda 架构和 Kappa 架构。针对当前业务特点,计算复杂、偶发的异常问题需要大数据量回溯等特性。当前实时数据的数据架构采用的是 Lambda 架构。由 Doris 承载分钟级的批处理,Flink 来承载秒级别简单逻辑的流处理。具体如下:
3.3 应用层建设经验分享
3.3.1 实时数据系统
01 业务场景
实时数据系统主要有两个大方向:实时业务数据和实时算法特征。
(1)实时业务数据。
(2)实时算法特征。
以实时数据为基础,提供多样的实时算法特征,与推荐算法团队共同提升 DAU、留存、用户付费等核心指标。
02 面临的困难
(1) 依赖数据源多,计算规则复杂。以我们的播放量计算为例:
(2) 时间敏感性高
以算法特征为例,用户浏览某内容后,针对后续关联的一系列计算后,需要在一定时间内产出计算结果(10min 未产出后续推荐效果会有波动,26min 该特征的效果会降为 0)
(3) 调度过程中协调成本高
03 解决方案
(1) 搭建实时数据基座,建设相应的数据模型,降低建设成本。
(2)针对依赖数据众多、计算规则复杂、质量难以保证等问题。通过建设工具降低解决问题的成本。
(3)时间敏感性高,加强监控、与 Doris 集群共同提升吞吐效率和计算效率:
3.3.2 用户画像系统 DMP
01 业务场景
用户画像系统主要有两大功能:用户检索和用户分析。
(1)用户检索。
重点在于快速完成人群包圈选同时在圈选条件变更过程中,需要快速计算出预计能圈的用户有哪些?
(2)用户分析。
重点在于多人群包的各个维度对比分析,通过分析结论找到最明显的用户特征(通过 TGI 值判断)
02 面临的困难
(1)数据规模大。
我们当前是 200+ 个标签,每个标签均有不同的枚举值,总计有 300+ 万的 tag。tag 对用户的打标量级在 900+ 亿条记录。由于标签每日更新导入量级十分大。
(2)筛选响应时间要求高。
针对简单的筛选,要求在秒级别出结果,针对复杂的人群筛选,筛选后人群量大的情况,要求在 20s 内完成人群包生成。
(3)人群包除了 long 类型的用户 id 外,还需要有多种不同的设备 id 和设备 id md5 作为筛选结果。
(4)用户分析场景下,针对 300+ 万 tag 的多人群交叉 TGI 计算,需要在 10min 内完成。
03 解决方案
(1)DMP 业务架构
(2)DMP 业务流程
(3)性能问题针对性解决;数据规模大,提升导入性能,分而治之。
(4)提升人群筛选和人群分析的计算速度,分而治之。
04 效果
上线后,接入了知乎多个主要场景的业务,支持多业务方的人群定向和分析能力。为业务带来曝光量、转化率等直接指标的提升。
同时在工具性能上,有如下表现:
05 待提升
(1)功能扩展
(2)性能提升
>> 后续结果由行列转换后,用户画像结果处理流程中会将设备 id 获取方式通过 join 维度表来实现,人群缩减通过 order by rand limit 来实现,会有比较明显的性能提升。
>> 后续可以直接读取 bitmap 后,业务逻辑中会替换为直接获取 bitmap,会极大程度的减少数据传输量,同时业务逻辑可以针对性缓存。
3.4 工具层建设经验分享
3.4.1 数据集成
01 业务场景
“巧妇难为无米之炊”,没有数据也就没有后面的一切,数据采集作为基础至关重要。Doris 数据仓库自带的多种数据导入方式 对于数据入仓非常便利,但是在我们的使用过程中也遇到了一些问题。比如:
(1)在从离线数仓进行 broker load 的时候数据依赖丢失,上游数据错误无法评估受影响的范围。
(2)需要编写冗长的 etl 处理逻辑代码,小的操作变更流程很长,需要全流程(至少 30 分钟)的上线操作;此外每次部署操作还有可能遇到各种初始化 MQ 消费者的问题
(3)缺少运行状态监控,出现异常问题无法在分钟甚至小时级别的时间发现;
(4)在线导入仅支持 kafka json,上游的 pulsar、protobuf 数据仍需要代码开发进行转发,导致每次接入数据都需要转换函数的开发以及同样全流程的上线操作;
(5)业务逻辑中,期望业务是什么样,Doris 中的数据就是什么样,让业务无感知。这种全增量同步期望被包住,而不是做很多配置或开发很多代码来实现。
02 解决方案
在建设实时数据模型的过程中。需要依赖众多业务的数据,同时需要针对数据逐层建设数据模型。摸索并搭建了实时数据集成系统和实时调度系统,并下沉到工具层。
(1)实时数据集成。建设快速且自定义的配置,针对不同的数据源建设导入能力。
(2)与 Doris 的 Broker Load 和 Routine Load 进行配合,在此基础上搭建针对业务的全增量同步。
(3)封装集成能力对内部暴露的接口,业务层无需理解中间过程,只选择同步的数据库和数据表即可进行实时同步。
03 效果
(1)同步配置
(2)同步任务
(3)上线前
(4)上线后
3.4.2 数据调度
01 业务场景
我们在初期通过 Doris 建设实时数据的过程中,是通过 Routine Load 后的数据,再定时任务执行后续计算逻辑,后再将计算结果导出到承载存储,如 Redis、Zetta(知乎自研 HBase 协议) 中完成外部压力承载。在这个过程中遇到了如下问题:
(1)依赖未就绪后续任务就执行。如最近 24 小时的曝光,在 15:05 运行昨日 15:00至今日 15:00 的查询。此时如果 Routine Load 仅导入到 14:50 的数据,这次执行结果异常;
(2)Doris 资源有限,但很多任务都是某些整点整分钟的,一次性大量的计算任务造成集群崩溃;
(3) 任务是否执行成功,任务是否延迟,是否影响到业务,无报警无反馈;
(4) 导出存储过程通用,重复代码开发,每次都需要 0.5 - 1 人天的时间开发写入和业务接口
(2)收益
3.4.3 数据质量
01 业务场景
数据,已经成为互联网企业非常依赖的重要资产。数据质量的好坏直接关系到信息的精准度,也影响到企业的生存和竞争力。Michael Hammer(《Reengineering the Corporation》一书的作者)曾说过,看起来不起眼的数据质量问题,实际上是拆散业务流程的重要标志。数据质量管理是测度、提高和验证质量,以及整合组织数据的方法等一套处理准则,而体量大、速度快和多样性的特点,决定了大数据质量所需的处理,有别于传统信息治理计划的质量管理方式。
具体到针对知乎的各个业务:
AI平台、增长团队、内容平台等已经将部分或全部业务渐渐迁移到实时计算平台,在接入数据更实时,更迅速的接入带来的所享受的收益外,数据质量更加变得重要。
(1)完整性:
数据完整性问题包括:模型设计不完整,例如:唯一性约束不完整、参照不完整;数据条目不完整,例如:数据记录丢失或不可用;数据属性不完整,例如:数据属性空值。不完整的数据所能借鉴的价值就会大大降低,也是数据质量问题最为基础和常见的一类问题;
(2)一致性:
多源数据的数据模型不一致,例如:命名不一致、数据结构不一致、约束规则不一致。数据实体不一致,例如:数据编码不一致、命名及含义不一致、分类层次不一致、生命周期不一致……相同的数据有多个副本的情况下的数据不一致、数据内容冲突的问题;
(3)准确性:
准确性也叫可靠性,是用于分析和识别哪些是不准确的或无效的数据,不可靠的数据可能会导致严重的问题,会造成有缺陷的方法和糟糕的决策;
(4)唯一性:
用于识别和度量重复数据、冗余数据。重复数据是导致业务无法协同、流程无法追溯的重要因素,也是数据治理需要解决的最基本的数据问题;
(5)关联性:
数据关联性问题是指存在数据关联的数据关系缺失或错误,例如:函数关系、相关系数、主外键关系、索引关系等。存在数据关联性问题,会直接影响数据分析的结果,进而影响管理决策;
(6)真实性:
数据必须真实准确的反映客观的实体存在或真实的业务,真实可靠的原始统计数据是企业统计工作的灵魂,是一切管理工作的基础,是经营者进行正确经营决策必不可少的第一手资料;
(7)及时性:
数据的及时性是指能否在需要的时候获到数据,数据的及时性与企业的数据处理速度及效率有直接的关系,是影响业务处理和管理效率的关键指标。
02 解决方案
效果
(1)某业务健康情况监控
以通过 DQC 监控的某一个业务的健康情况,该业务由多个导出任务和中间计算任务及部分数据源组成,当前情况是一切正常。期间如果出现某节点任意异常后,都可及时发现。
(2)某任务中间逻辑监控
该任务中间计算中其中部分规则未达标,导致该任务未通过。
04 收益
(1)上线前
(2)上线后
04总结和展望
4.1 收益总结
4.1.1 业务发展方面
01 针对实时业务数据
02 针对实时算法特征
03 针对用户画像
4.1.2 工具建设方面
4.1.3 人员组织方面
4.2 未来展望
从 2021 年 8 月成立至今,我们一直思考如何提供更好的实时数据服务?实时数据能建设什么方面的应用,为业务创造价值?如何将用户画像服务做好?用户画像服务的筛选、分析能力如何为业务创造更大价值?摸着石头过河的同时,我们也在不断摸索和建设相关的业务能力和基础建设。在明年的发展中,我们还会针对以下方面进一步发展:
01 基于实时数据
02 基于用户画像
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。