写点什么

基于 DAYU 的实时作业开发,分分钟搭建企业个性化推荐平台

发布于: 2020 年 11 月 25 日

摘要:搭建这个平台最费时耗力的事莫过于对批、流作业的编排,作业组织管理以及任务调度了。但是这一切,用 DAYU 的数据开发功能几个任务可通通搞定。

大多数电商类企业都会搭建自己的个性化推荐系统,利用自己拥有的用户数据、商品数据、用户行为数据以及各种维度计算得来的标签画像计算用户偏好,推荐最佳商品给用户,最大化地促进交易。

一个典型的推荐系统包括批处理计算、实时处理层、推荐应用 3 部分,是典型的 Lamda 架构。



搭建这个平台最费时耗力的事莫过于对批、流作业的编排,作业组织管理以及任务调度了。但是这一切,用 DAYU 的数据开发功能几个任务可通通搞定。当然,你可能会说,不是有专门的个性化推荐云服务吗,直接用它不香吗?这里我们不比赛举杠铃,如果企业还不具备利用各种推荐算法的能力,那直接花点钱买推荐服务是最佳选择;但是你如果想最大化地、持续地优化推荐算法的效果,框架还是自己搭比较靠谱。这里给一个例子,展示如何利用 DAYU 快速完成一个简单的推荐系统。除了 DAYU 的数据开发,还需要搭配华为云的 DLI、DIS、MRS-HBase。

首先介绍下 DAYU 开发的两种作业类型:



批作业

批作业只能被调度触发,任务执行一段时间必须结束,换句话说就是任务不能无限时间持续运行。作业是多个算子(一个也可以)组成的 Pipeline,Pipeline 作为一个整体被调度。

实时作业

实时作业这个名字其实不准确,实际上它可以是一个流、批混合的作业,也可以是个纯实时流处理作业,也可以是个单纯的批作业。作业是由多个算子组成的 Pipeline,相对批作业,实时作业中每个算子可单独被配置调度策略,而且算子启动的任务可以永不下线,这样就可以调度那些 always online 的 Flink、SparkStreaming 流处理作业。在实时作业里,带箭头的连线仅代表业务上的关系,而非任务执行流程,更不是数据流。

这个推荐系统的后台就使用实时作业来实现,一个流、批混合的作业,直接给个全景图:



这里涵盖了一个简单推荐系统的主要计算流程。更多算法的任务流程这里没有完全展示出来,例如基于模型的算法、基于深入学习的推荐算法,也不包含各种推荐指标的计算过程,有兴趣的同学可以百度学习。

整个任务中包括 9 组数据处理流程,6 个批作业流程,3 个实时作业:

批处理流程

从上到下,依次计算:

1)基于个用户特征、标签计算推荐列表

周期:每天一次

计算:每天通过 CDM 从 RDS 抽取用户数据到 DLI,基于每个用户的基本信息,年龄、性别、职业、收入、地域等等各种属性信息,以及来自 360 度画像系统的标签信息,生成推荐列表,保存到 HBase 中。

2)基于商品的相似性特征,计算推荐列表

周期:每天一次

计算:每天通过 CDM 从 RDS 抽取新增商品信息到 DLI,然后计算出来的基于商品相似特征的推荐列表,存入 HBase 中。

3)计算当天用户的偏好,生成日推荐列表

周期:每天一次

计算:通过 DIS dump 转储任务,把网站实时搜集的用户行为信息转储到 OBS 中,通过一批 Spark 算法(批量的用户协同、商品协同、基于内容相似性、LR 等算法),基于一天的行为数据计算推荐列表。然后把列表推到 HBase 中。

4)计算本周用户的偏好,生成周推荐列表

周期:每天一次

计算:计算行为同上,区别是基于一周的行为数据计算推荐列表。

5)计算 3 个月内的偏好,生成长期偏好推荐列表

周期:每天一次

计算:计算行为同上,区别是基于 3 个月的行为数据计算推荐列表。

6)计算流行产品的列表

周期:每天或者数小时

计算:通过用户总体商品的点击、搜索、评分等行为,基于 OBS 上用户的行为数据,按类别计算热门商品 Top50。这个列表也可作为补齐列表,当其他推荐列表还不足以填满网站的推荐位,可以用这个列表补齐。

实时流处理流程

1)实时计算用户偏好--Item-Based 协同算法

计算:通过 Flink 任务对 DIS 用户行为通道的数据进行消费,先把用户行为日志转换为标准行为(Time,userid,ItemID,Score),再通过流式 Item-Based 协同算法计算推荐列表,更新到 HBase 中。

2)实时计算用户偏好--User-Based 协同算法

计算:同上,区别是使用流式 User-Based 协同算法计算推荐列表,更新到 HBase 中。

3)实时计算用户偏好--Content-Based 算法

计算:同上,区别是使用流式 Content-Based 协同算法计算推荐列表,更新到 HBase 中。

以上一顿操作,在 HBase 中会有一堆以 UserID、Item 为 Key 的推荐列表,形如:

用户推荐列表结果:

userid_001:item100, item899, item 433, item 666,....

userid_002:item220, item334, item 720 item 666,....

userid_003:item728, item899, item 333, item 632,....

根据用户实时行为、历史行为不同周期,有若干组不同的推荐列表。

基于商品的推荐列表结果:

Item_0001: Item1000,Item333,time5213,...

Item_0002: Item1000,Item333,time5213,...

Item_0003: Item1000,Item333,time5213,...

另外,推荐系统平台还需要一个提供 rest 接口的服务,供 web 网站推荐位调用。当用户打开网页时,自动向该服务请求当前用户的推荐列表,服务访问 HBase,获取前面作业计算出来的多个推荐列表,并按一定策略组合成一个推荐列表返回给网页,就此,完成了一个端到端的推荐业务流程。

一个完整的推荐系统要更复杂一些,这里并没有讨论推荐系统的专题内容。从例子可以看出 DAYU 具备强大的编排和调度能力,单单一个任务就可以涵盖非常复杂的场景。实时上,大型的推荐系统平台还是需要针对性的定制,因为涉及到一些管理上的流程需要应对、闭环。不过基于华为云体系下各种平台、应用,有了 DAYU 这个助手,数据相关的方方面面的事务处理,将变得既简洁又高效。

本文分享自华为云社区《基于 DAYU 的实时作业开发,分分钟搭建企业个性化推荐平台》,原文作者:Loading... 。

 

点击关注,第一时间了解华为云新鲜技术~


发布于: 2020 年 11 月 25 日阅读数: 55
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
基于DAYU的实时作业开发,分分钟搭建企业个性化推荐平台