

Hologres在阿里搜索推荐实时数据场景下即席多维分析的最佳实践
source link: http://mp.weixin.qq.com/s?__biz=MzI0NTE4NjA0OQ%3D%3D&%3Bmid=2658370059&%3Bidx=1&%3Bsn=b2771dc149497bf3712d7973bd64ce54
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文作者 | 兰乾 阿里巴巴搜索推荐高级开发工程师
一、业务背景
阿里巴巴搜索推荐作为淘系核心流量入口,数据量大,对接的业务场景繁多,且需求变化快,同时对数据的实时性和准确性要求都很高,尤其在各业务方大促KPI完成度监控,并支撑算法迭代即时效果监控加快迭代速度,同时也为算法在线模型提供实时训练样本,提升算法效果等方面有着迫切的需求,因此为了满足这些实时数据的需求,在搭建稳定的数据体系过程中,需要解决许多痛点:
1)数据量大,资源有限下,需做到数据生产基本无延迟,并且查询秒级内响应;
2)查询维度繁多,且不固定,随时可能新增维度,需要丰富的明细数据支撑,且具备高扩展性和灵活性;
3)原始日志信息有限,需动态补充满足个性化数据需求;
4)任务、场景多,数据输出格式需要统一化,降低维护和对接成本;
5)需求迭代快,Blink作业频繁变更启停,增加系统不稳定性,需要实现Blink作业变更配置化。
对于实时数据而言,实时性与正确性是最基本的要求,另外鉴于上面提到的痛点和需求,搜索推荐部门结合Blink、交互式查询引擎Hologres,不断优化数据研发架构,最终实现了集数据输出格式化、查询交互式/个性化、Blink任务模板化以及Blink作业变更配置化等功能为一体的大数据研发架构,如下图所示:
二、实现原理
2.1 如何实现数据输出的交互式、个性化、高扩展性
数据输出的交互式、个性化、高扩展性,我们主要结合了Hologres 行存表和列存表优势来实现。
要实现数据输出的交互式、个性化、高扩展性,依赖数据中丰富维度,比如商品、商家、用户的各种特征属性,或者某次用户行为下的特定场景属性等,这些维度(属性)有些是相对固定的基本属性,比如用户的城市、年龄、商品的类目等信息,但有些是有业务独立特征的个性化属性,比如特定的一批商品、特定的一些用户场景等,这些业务上个性化的属性,随时都在新增或删减,并且每个业务查询的维度是不同的,这样不仅需要搭建交互式的多维数据分析可视化输出,还需要能够灵活支持不同业务场景个性化的数据诉求。
个性化维度(属性)主要来源于两个地方,一个是数据采集阶段提取的动态化场景信息,如算法分桶信息等;另一个是原始日志中缺失的个性化信息,例如商品、商家、用户的个性化特征,这些个性化的动态特征最后都按不同的对象属性存储到Hologres列存表对应的多值字段中,例如商品、商家、用户、场景维度信息分别对应Hologres列存表中的多个多值字段:
1)原始日志动态化场景信息
随着不同业务的不同变化,每个业务服务端会将新增的业务信息(维度)下发移动客户端,上报日志中心, 数据研发工程师对应更改日志解析配置,搭配Blink作业变更配置化,就可以0代码发布实现新增维度的无痕提取与透出,对应的业务产品及算法即可在15分钟内查询到该新增维度下的实时数据,例如算法实验动态分桶效果分析等。
如下表1所示,将用户vs商品vs商家行为日志,如曝光、点击、成交、加购等明细日志分别存入各自Hologres列存表,几张Hologres列存表使用同一套schema,其中丰富的多值字段中存放一些从原始日志中提取的信息以及在Blink中关联商品(商家、用户)Hologres行存维表获取的补充信息,是支持交互式/个性化查询的核心字段,高可扩展性和灵活性即席多维分析核心字段。
按照 Who+What+When+ Where + How形式对表schema进行设计,其中How(何事,频次)按用户行为是曝光、点击还是成交加购拆分到不同的表中,行为发生频次则与Who+What+When+ Where 一同设计到表schema中,如下:
表1 用户vs商品vs商家行为日志->Hologres列存表
2)维表关联提取动态个性化信息
为了尽可能地支持更多维度、更个性化和可扩展的查询,若想保留越多的维度特征信息,数据聚合度越高,特征信息损失越多,因此,在Blink作业中将【用户的明细日志】关联上Hologres行存表中商品、商家、用户等对象多种可动态扩展属性后, 并将属性作为多值字段直接写入 Hologres列存表 中,实现任意交叉维度的数据输出。
使用Hologres行存表,存储商品、商家、用户等对象的特征维度信息,每个对象一张Hologres行存表,如下表格2所示为商品的Hologres行存表部分字段, 商家、用户表基本逻辑一致:
表2 商品属性特征->Hologres行存表
将海量商品、用户的特征信息存入对应的Hologres行存表,并将业务输入的个性化动态属性定时写入Hologres行存表预留字段,几十亿商品的特征信息仅耗时5分钟完成数据切换,结合Blink partition join 缓存机制,缓存命中率高达97%,使得千万级join qps 实际请求Hologres行存表时仅有几十万qps,行存表中tags信息通过Blink作业关联加工后,最终输出到Hologres列存表,作为查询维度供交互式分析使用。
2.2 如何实现Blink作业变更配置化
面对层出不穷的需求变化,但考虑到日志中存在无效信息,并未将日志中全部信息提取作为可查询维度,需要根据需求变化变更Blink SQL提取,加上Blink作业频繁启停也会增加运维成本,增加业务迭代的人工和时间成本。因此使用MaxCompute(原odps)小表存储日志过滤和解析配置,仅需变更配置内容,将新提取的信息自动写入到Hologres中指定多值字段中,无需变更Blink作业和Hologres表结构,该新增信息就可作为维度任意查询和输出。
由于Blink中需要通过发布及启停作业才能读取配置化的信息,继而完成对实时数据处理的变更,但是搜索推荐所有业务是共用一套Blink作业,且业务频繁变更,但如果因为个别业务频繁变动公共Blink作业,对实时数据体系影响较大,又考虑到搜索推荐实时数仓中选择使用明细数据,因此,在Blink作业中额外关联ODPS表(_存储数据解析及过滤配置,由于表极小,可全量缓存在Blink机器上_),其中数据解析与过滤配置与存储用户行为日志的Hologres列存表schema是一一对应的,获取到作业所需的解析及过滤配置后,并将上游数据和解析配置同时作为入参输入到通用的日志处理UDTF中,并按表格1中用户vs商品vs商家行为日志->Hologres列存表的schema格式输出数据。**这样仅需变动ODPS表中存储的解析配置信息,即可无痕将从日志中额外提取的信息输出到Hologres列存表中对应的多值字段作为维度可查了。
表3 Blink任务数据解析及过滤配置->ODPS表
2.3 小结
目前搜索推荐大部分作业通过Blink开发产出的是实时明细数据,也就是说并非聚合数据,这样搭配交互式查询引擎Hologres,可以自由维度查询,但对交互式查询引擎的要求较高; 若维度相对固定,可以做些轻度聚合后,数据输出到igraph,Hologres,Hbase等存储与查询引擎,可节省资源,但扩展性差,且新增维度需要修改Blink任务。
总的来说,基于__海量的明细用户日志__,__Hologres__高达几千万__QPS__的写入性能,以及灵活的__多值字段__设计,优秀的全局去重能力__,搭配动态维度无变更接入解决方案,使得__搜索推荐实时大数据在低开发成本、低运维、0沟通情况下,既保证了实时数据的实时性和准确性,又提升数据交互式即席分析的个性化、灵活性和高扩展性。
三、即席多维分析场景实战
接下来详细介绍如何通过Hologres和Blink实现1小时内无痕新增分析维度,接入即席多维分析实战场景中。
3.1 原始日志动态化场景信息
例如需要添加实验桶信息,搜索推荐由于场景复杂,采用的复杂的交叉分桶模式,一次用户行为对应多个实验分桶,每时每刻都会有新增的实验分桶,服务端只需将新增的分桶信息下发客户端,通过数据采集之后,自动转换成Hologres列存表特定多值字段如algo_tags的值,该分桶对应实时数据则可即发即查,加快算法迭代周期。
为减轻存储和计算压力,仅从原始日志中提取核心维度放入Hologres列存表多值字段,因此对于特定业务,新增的个性化场景信息,可以通过变更ODPS表中存放的数据解析配置,即可无痕将新增的个性化场景信息转换成维度添加到Hologres列存表对应多值字段中,例如在推荐中新增的红包业务,且需要将对应的红包信息转换成查询维度,在推荐仅维护一套Blink作业和Hologres表的情况下,基于统一的日志规范,无需任何变更,自动在推荐实时数仓中新增了红包场景数据,另外红包业务中携带的红包信息,则需要在ODPS表中解析配置里新加相应的提取逻辑,比如设置成将日志中红包唯一识别码的值放置到Hologres列存表的scene_tags字段中,则该红包识别码即可作为维度供业务查询分析使用,监控红包曝光等实时效果。
3.2 维表关联提取动态个性化信息
面对海量的实时数据,如何快速精准地获取、监控我想要的数据呢?这就需要给数据带上所需的维度或特征信息,简单来说主要有以下几点:
1)原始数据日志在大部分情况下,缺失商品类目、行业,用户地域等基本属性;
2)除了使用通用的类目、行业等基本信息,还需要监控某些特定的商品、某些核心的商家、某些特殊的人群下的数据情况,是需要有对应的个性化属性的。
3)如果不关联上基本属性或个性化属性维度信息,就没办法直接过滤查询获取到对应维度下的数据,需要额外关联并二次加工才可获取,无法灵活查询,做不到任意个性化维度的交互式查询。
总结来说,不同业务场景对实时数据都会有不同的需求,需要监控或使用各种基本属性和个性化属性维度下实时数据,但如何满足各种各样个性化的实时数据需求呢?
如下图所示,搭建了维度特征管理平台Seahummer,支持商品、商家、用户等对象的标签特征管理,根据业务方配置的个性化属性,比如卖家分层、用户分层,以及各种自定义的业务属性等,关联到对应的商品/商家/用户上,最终产出对应MaxCompute(odps)维表,并导入Hologres行存表中,在Blink流作业里,关联对应Hologres行存表即可获取相应的基本属性和个性化属性,并标记到Hologres列存表实时数据上输出,这些属性最终以多值字段的形式存储在Hologres列存表中,作为查询维度呈现在可视化报表。
维度的增减,无需更改Blink作业,整体维度变更链路最慢小时内完成维表数据切换,目前业务方已能通过seahummer平台自助打标后,在通天塔数据门户(阿里巴巴内部的一款分析软件)中自助即席多维分析,涵盖1000+自定义维度信息,无需开发同学额外支持,解放人力,减少沟通成本。
1)对象——商品、商家、用户
2)标签数据来源——odps、excel
3)基本属性——商品/商家名称、类目、行业、BC类型,用户地域等
4)个性化属性——指定商品池、特殊人群、商家等
5)与Blink实时流作业打通——Blink流任务关联Hologres维表即可获取相应的基本属性和个性化属性
例如算法新上线了分桶实验,需要对特定商品或人群采取特定的算法策略,只需要对这些商品或用户通过维度特征管理平台Seahummer录入,对应标签则自动流入到相应商品或用户的Hologres行存表中的tags字段,并转换成了用户行为Hologres列存表中的item_tags或user_tags多值字段中,最后以自定义、可扩展查询维度的形式透出在可视化报表中;上述红包业务例子中,需要对重点目标人群倾斜部分曝光流量,这时候同理将重点目标人群打上标识,即可监控目标与非目标人群曝光流量对比,适时调整算法策略,完成业务目标。
四、业务价值
4.1自定义交互式即席多维查询
依托Hologres强大的多维分析能力,以及高并发、无延迟实时写入和全局去重能力,其中全局去重能力解决了在Blink作业异常情况下数据去重问题,保障了数据一致性。在日常及大促期间,承接了搜索推荐海量流量数据,支持搜索推荐算法AB实验实时效果分析,除了有对应的实时数据多维交互式可视化报表以外,还提供了实时数据服务,支持算法在线调用,自动调整算法策略,此外生产的实时数据流,还在Blink中用于算法实时模型训练,加快了算法迭代周期,达到任意查询维度结果秒级响应。
在支持算法AB实验即时查询分析的同时,还支持商家、商品、用户等对象各类属性及标签多维度下的自由查询,比如用户年龄、城市等级分层等,以及通过维表或流量日志接入的可扩展的自定义标签及维度,极大地扩展了不同算法、产品、运营、分析师角色即时分析的自由度和灵活性。
4.2某特定业务实时大屏
依托Hologres的多维分析能力,还可以针对某些特定独立业务搭建实时监控大屏,比如在该业务促销活动期间,监控对应的成交和KPI完成度,以及分析当前业务触达及消费的人群特征分布,用于即时调整运营策略,完成KPI。
更多精彩
识别二维码立即体验
阿里CTO鲁肃:技术的想象力不应设限,未来所有应用的核心都离不开数据和智能
云栖大会第一天,我们生了头“驴”和“无影”!
点此阅读作者更多好文!
Recommend
-
50
-
38
-
15
近实时搜索NRT(一) Lucene提供了近实时搜索NRT(near real time)的功能,它描述了索引信息发生改变后,不需要执行
-
21
简介: 本文重点介绍Hologres如何帮助阿里巴巴客户体验部(CCO),构建集实时化、自助化、系统化于一体的用户体验实时数仓,完美助力双11场景,支持上千+服务大屏,削峰30%,节约成本近30%。 刚刚结束的2020...
-
12
概要:刚刚结束的2020天猫双11中,MaxCompute交互式分析(Hologres)+实时计算Flink搭建的云原生实时数仓首次在核心数据场景落地,为大数据平台创下一项新纪录。借此之际,我们将陆续推出云原生实时数仓双11实战系列内容。本文将会首次对...
-
5
王炸结营!实时计算 Flink 版 + Hologres,《实时数仓入门训练营》课程内容合集简介:阿里云超强专家阵容倾力打造的实时数仓 “王炸组合”,现已将所有课程整...
-
6
阿里云 Flink+Hologres:构建企业级一站式实时数仓 精选 原创 阿里云大数据AI技术...
-
2
Auto Trader如何构建实时的客户数据搜索平台? 解道Jdon
-
8
download: 海量数据高并发场景,构建Go+ES8企业级搜索微服务无密分享_666XIT 海量数据高并发场景,构建Go+ES8企业级搜索
-
6
基于Hologres向量计算与大模型免费定制专属聊天机器人 推荐 原创 阿里云大数据AI技术...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK