Flink 在 讯飞 AI 营销业务的实时数据分析实践

简介: 科大讯飞中级大数据工程师汪李之在 FFA 2021 的演讲。

摘要:本文整理自科大讯飞中级大数据工程师汪李之在 Flink Forward Asia 2021 的分享。本篇内容主要分为四个部分:

  1. 业务简介
  2. 数仓演进
  3. 场景实践
  4. 未来展望

点击查看直播回放 & 演讲PDF

一、业务简介

img

构建实时数据分析平台是为了更好的解决业务对更高数据时效性的需求,先简单介绍一下业务流程。

从日常的场景说起,当我们打开手机 APP 时,常会看到广告。在这样一个场景中,涉及到了两个比较重要的角色。一是手机 APP,即流量方;另一个是投广告的广告主,如支付宝、京东会投放电商广告。广告主购买流量方的流量投广告就产生了交易。

讯飞构建了一个流量交易平台,流量交易平台主要的职能是聚合下游流量,上游再对接广告主,从而帮助广告主和流量方在平台上进行交易。讯飞还构建了投放平台,这个平台更侧重于服务广告主,帮助广告主投放广告,优化广告效果。

在上述的业务流程图中,APP 与平台交互时会向平台发起请求,然后平台会下发广告,用户随后才能看到广告。用户看到广告的这个动作称之为一次曝光,APP 会把这次曝光行为上报给平台。如果用户点击了广告,那么 APP 也会上报点击行为。

广告在产生之后发生了很多行为,可以将广告的整个过程称为广告的一次生命周期,不仅限于图中的请求、曝光、点击这三次行为,后面可能还有下单、购买等。

img

在这样一个业务流程中,业务的核心诉求是什么呢?在广告的生命周期中有请求、曝光和点击等各种行为,这些行为会产生对应的业务日志。那么就需要从日志生成数据供业务侧分析,从日志到分析的过程中就引入了数仓构建、数仓分层,数据呈现的时效性就带来了实时数据仓库的发展。

二、数仓演进

img

上图是一个典型的数仓分层框架,最底层是 ODS 数据,包括业务日志流、OLTP 数据库、第三方文档数据。经过 ETL 将 ODS 层的数据清洗成业务模型,也就是 DWD 层。

img

最初是建立了 Spark 数仓,将业务日志收集到 Kafka 中再投递到 HDFS 上,通过 Spark 对日志进行清洗建模,然后将业务模型再回写到 HDFS 上,再使用 Spark 对模型进行统计、分析、输出报表数据。后续,讯飞沿用了 Spark 技术栈引入了 spark-streaming。

img

随后逐渐将 spark-streaming 迁移到了 Flink 上,主要是因为 Flink 更高的时效性和对事件时间的支持。

当初 spark-streaming 的实践是微批的,一般设置 10 秒或是 30 秒一批,数据的时效性顶多是秒级的。而 Flink 可以支持事件驱动的开发模式,理论上时效性可以达到毫秒级。

当初基于 spark-streaming 的实时数据流逻辑较为简陋,没有形成一个数仓分层的结构。而 Flink 可以基于 watermark 支持事件时间,并且支持对延迟数据的处理,对于构建一个业务逻辑完备的数仓有很大的帮助。

img

由上图可见,ODS 的业务日志收集到 Kafka 中,Flink 从 Kafka 中消费业务日志,清洗处理后将业务模型再回写到 Kafka 中。然后再基于 Flink 去消费 Kafka 中的模型,提取维度和指标,统计后输出报表。有些报表会直接写到 sql 或 HBase 中,还有一些报表会回写到 Kafka 中,再由 Druid 从 Kafka 中主动摄取这部分报表数据。

在整个数据流图中 Flink 是核心的计算引擎,负责清洗日志、统计报表。

三、场景实践

3.1 ODS - 日志消费负载均衡

img

ODS 业务中,请求日志量级大,其他日志量级小。这样请求日志(request_topic)在 Kafka 上分区多,曝光和点击日志(impress/click_topic)分区少。

img

最初是采用单 source 的方法,创建一个 FlinkKafkaConsumer011 消费所有分区,这可能导致 task 消费负载不均。同一 topic 的不同分区在 task 上可均匀分配,但不同 topic 的分区可能会被同一 task 消费。期望能达到的消费状态是:量级大的 topic,其 task 和 partition 一一对应,量级小的 topic 占用剩下的 task。

img

解决方法是把单 source 的消费方式改成了多 source union 的方式,也就是创建了两个 consumer,一个 consumer 用来消费大的 topic,一个 consumer 用来消费小的 topic,并单独为它们设置并行。

3.2 DWD - 日志关联及状态缓存

img

DWD 是业务模型层,需要实现的一个关键逻辑是日志关联。基于 sid 关联广告一次生命周期中的不同行为日志。业务模型记录了 sid 级别的维度和指标。

img

最初是基于 30s 的 window 来做关联,但这种方式会导致模型输出较第一次事件发生延迟有 30s,并且 30s 仅能覆盖不到 12% 的曝光日志。如果扩大窗口时间则会导致输出延迟更多,并且同一时刻存在的窗口随时间增长,资源消耗也比较大。

img

后续改成了基于状态缓存的方式来实现日志关联,即 ValueState。同一 sid 下的日志能够访问到相应的 ValueState。不过为保证及时输出,将请求、曝光、点击等不同指标,拆分到了多条数据中,输出的数据存在冗余。

img

随着业务的增长和变化,需要缓存的状态日益变大,内存已无法满足。于是我们将状态从内存迁移至 HBase 中,这样做的好处是支持了更大的缓存,并且 Flink checkpoint 负载降低。但同时也带来了两个问题:引入第三方服务,需要额外维护 HBase;HBase 的稳定性也成为计算链路稳定性的重要依赖。

img

在 HBase 状态缓存中,遇到一个数据倾斜的问题,某条测试 sid 的曝光重复上报,每小时千次量级。如上图,该条 sid 对应的状态达到 MB 级别,被频繁的从 HBase 中取出并写回,引起频繁的 gc,影响所在 task 的性能。解决办法是根据业务逻辑对 impress 进行去重。

3.3 DWS - 实时 OLAP

img

在 DWD 层基于 Flink 的事件驱动已经实现了实时模型,再由 Flink 来消费处理实时模型,从中提取出维度和指标,然后逐条的向后输出。在这个过程中已是能输出一个实时 OLAP 的结果了,但也需要有个后端的存储来承接,我们因此引入了 Druid。Druid 可以支持数据的实时摄入,并且摄入的结果实时可查,也可以在摄入的同时做自动的聚合。

img

上图左侧:每张表需要启动常驻任务等待 push 过来的数据。常驻任务被动接收数据,易被压崩;常驻任务异常重启麻烦,需要清理 zk 状态;常驻任务的高可用依赖备份任务,浪费资源。

上图右侧:一张报表对应一个 Kafka 消费任务。消费任务自己控制摄入速率更加稳定;任务可依赖 offset 平滑的失败自启。

3.4 ADS - 跨源查询

img

Presto 是分布式的 SQL 查询引擎,可从不同的数据源抽取数据并关联查询。但会带来 Druid 的下推优化支持不完善的问题。

3.5 流批混合现状

img

如上图所示是 Lambda 大数据框架,流式计算部分是 Kafka+Flink,批处理则是 HDFS+Spark。

流式计算的特点:

  • 响应快,秒级输出;
  • 可重入性差,难以重复计算历史日志;
  • 流的持续性重要,异常需迅速介入。

批处理的特点:

  • 响应慢,小时级输出;
  • 可重入性好,可重复计算历史数据;
  • 数据按小时粒度管理,个别异常可从容处理。

流批混合痛点:

  • 两遍日志清洗的计算量;
  • 两套技术框架;
  • 数据一致性问题。

四、未来展望

img

流批混合优化,直接将实时模型输出到 HDFS。

好处是:

  • 避免了对日志的重复清洗;
  • 统一了建模的技术框架;
  • 支持延迟数据对模型的更新。

但也有以下两个问题:

  • 实时模型重复,量级更大,计算消耗大;
  • 支持数据更新的技术如 Hudi,会改变模型的使用方式,对后续使用者不友好。

img

最后聊一下对 Flink-SQL 的想法:检索近 10 分钟的某条异常日志、快速评估近 10 分钟新策略的效果都属于即时、微批、即席查询。批处理链路小时级响应太慢;实时检索系统如 ES,资源消耗大。可以利用 Kafka + Flink-SQL 解决上述问题,Kafka + Flink-SQL 也是今后计划尝试的方向。

点击查看直播回放 & 演讲PDF


更多 Flink 相关技术问题,可扫码加入社区钉钉交流群
第一时间获取最新技术文章和社区动态,请关注公众号~

O1CN01tmtpiy1iazJYZdixL_!!6000000004430-2-tps-899-548.png"

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Flink版现开启活动:
99 元试用 实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制卫衣;另包 3 个月及以上还有 85 折优惠!
了解活动详情:https://www.aliyun.com/product/bigdata/sc

image.png

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
7月前
|
人工智能 自然语言处理 搜索推荐
AI营销新宠助力企业突围
AI浪潮下,企业如何借力新技术突围?OpenAI与立讯合作预示消费级AI设备爆发,AIGEO市场规模2024年将超180亿元。AI语义预检内容提升曝光效率,精准触达用户。63%网民用AI获取信息,AI搜索流量占比达42%。政策支持叠加技术进步,内容营销迎来智能变革。企业需重构策略,把握AI红利。欢迎交流咨询,共探增长新路径。
|
10月前
|
机器学习/深度学习 人工智能 搜索推荐
AI与电商API的融合:开启智能推荐与精准营销新时代
人工智能(AI)与电商API的深度融合,正推动电商行业迈入智能推荐与精准营销的新时代。通过智能推荐系统、个性化服务、业务流程自动化等应用,AI助力电商平台提升运营效率、优化用户体验,并驱动商业模式创新。然而,数据安全、模型偏差和技术迭代等挑战亟待解决。未来,随着算法优化、自动化深化及跨平台支持加强,AI与电商API将为行业带来更多智能化、个性化的解决方案,开启电商发展的新篇章。
|
10月前
|
人工智能 自然语言处理 DataWorks
AI工具落地指南:企业SEO与营销双提升
使用国内工具(如百度智能投放)规避数据风险,参考乐儿互动的SEO合规方案。 通过以上工具组合与策略调整,企业可实现SEO流量与营销转化的双重提升。
|
6月前
|
人工智能 编解码 搜索推荐
AI智能换背景,助力电商图片营销升级
电商产品图换背景是提升销量与品牌形象的关键。传统抠图耗时费力,AI技术则实现一键智能换背景,高效精准。本文详解燕雀光年AI全能设计、Canva、Remove.bg等十大AI工具,涵盖功能特点与选型建议,助力商家快速打造高质量、高吸引力的商品图,提升转化率与品牌价值。(238字)
620 0
|
6月前
|
自然语言处理 数据挖掘 关系型数据库
ADB AI指标分析在广告营销场景的方案及应用
ADB Analytic Agent助力广告营销智能化,融合异动与归因分析,支持自然语言输入、多源数据对接及场景模板化,实现从数据获取到洞察报告的自动化生成,提升分析效率与精度,推动数据驱动决策。
|
搜索推荐 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.3 应用实践之 精准营销场景
本文介绍了基于用户画像的精准营销技术,重点探讨了如何通过标签组合快速圈选目标人群。实验分为三部分: 1. **传统方法**:使用字符串存储标签并进行模糊查询,但性能较差,每次请求都需要扫描全表。 2. **实验1**:引入`pg_trgm`插件和GIN索引,显著提升了单个模糊查询条件的性能。 3. **实验2**:改用数组类型存储标签,并结合GIN索引加速包含查询,性能进一步提升。 4. **实验3**:利用`smlar`插件实现近似度过滤,支持按标签重合数量或比例筛选。
252 3
|
10月前
|
人工智能 自然语言处理 监控
无需编程,我用 AI 模型结合 RPA 自动化,用 2 天时间手搓小红书营销产品
这是一篇关于如何用ai 和无代码方式,为运营提供一套“小红书爆款生产流水线”的工具,系统可自动采集对标博主笔记、分析热点数据并生成选题草稿,用户仅需补充细节即可完成高质量内容创作。流程涵盖关键词采集、对标博主监控、高价值笔记筛选、AI文案与图片创作及多账号矩阵发布。相比传统方式,该方法大幅提升效率,1小时可完成10篇内容创作,助力创作者在竞争中脱颖而出。文中还详细解析了关键词采集、对标博主分析、自动化排版等关键步骤,适合希望提升内容生产效率的运营者参考。
|
10月前
|
人工智能 监控 搜索推荐
实时数据分析:如何利用API优化营销决策
在数字化营销中,实时数据分析是提升决策效率的关键。通过API连接数据源与应用,可快速获取广告、用户行为等实时数据,助力敏捷优化。本文详解如何利用API:从选择集成到实施分析,再到驱动决策,涵盖CTR、ROI计算及A/B测试等实践。结合电商案例,展示如何通过API监控、调整策略以提升销售额。未来,AI与预测API将进一步推动智能化营销。
439 4
|
监控 数据可视化 搜索推荐
如何通过数据分析优化营销流程?
在当今竞争激烈的市场中,企业需构建高效的营销流程以整合资源、提升效率并实现业务增长。本文从目标设定、渠道选择、内容创作、数据分析及团队协作工具等方面详细探讨了如何优化营销流程,并指出了常见问题及改进方向。通过明确目标、精准选择渠道、创作高价值内容、用数据驱动决策以及提升团队协作效率,企业能够在激烈的市场竞争中脱颖而出,实现持续增长。
|
人工智能 自然语言处理 搜索推荐
“AI拜年”火遍朋友圈,营销的终局是拼技术
2025年春节前夕,AI拜年成为新潮流。百度通过“春节祝福语”活动,利用文心大模型4.0 Turbo生成个性化拜年贺卡,用户只需上传照片和输入文案,即可获得高度逼真的定制贺卡。这项技术凭借iRAG(检索增强生成)实现了高精度图像生成,避免了常见的“AI味儿”,使AI生成的内容既真实又富有文化内涵,为普通用户带来了专业级的创作体验,也为图像生成的产业化落地铺平了道路。
736 9

相关产品

  • 实时计算 Flink版