阿里CCO:基于 Hologres 的亿级明细 BI 探索分析实践

阿里巴巴CCO利用Hologres+FBI支持体验洞察,解决亿级明细BI查询问题,实现秒级返回,提高业务效率10倍。通过Hologres的实时离线联邦查询、表设计优化、T+1分区覆盖等方式,解决了数据量大、实时离线对比等挑战,实现了数据洞察的高效和灵活。
摘要由CSDN通过智能技术生成

CCO是Chief Customer Officer的缩写,也是阿里巴巴集团客户体验事业部的简称。随着业务的多元化发展以及行业竞争的深入,用户体验问题越来越受到关注。CCO体验业务运营小二日常会大量投入在体验洞察分析中,旨在通过用户的声音数据结合交易、物流、退款等业务数据,洞察发现消费者/商家体验链路上的卡点问题并推进优化,带给消费者和商家更好服务体验。

以今年3月为例,通过统计日志数据发现,共有80+业务同学提交了22000+个Query,都是围绕着用户心声和业务数据的多维度交叉分析,如果按照每个Query小二平均投入10分钟进行编写、执行、检查等操作来计算的话,共计投入458工作日,也就意味着这80+业务同学人均每个月至少有1周的时间全部投入在数据处理、运行上。业务侧大量的洞察分析诉求也使得体验洞察的数字化和智能化能力建设势在必行,我们需要有能支持到业务复杂场景Ad-hoc查询的数据能力和产品能力。

通过对数据产品的不断迭代,我们采用Hologres+FBI支撑CCO体验小二所有数据探索需求,月均50亿+明细数据聚合查询秒级返回,支持100+业务小二大促、日常的体验运营洞察分析,助力业务小二单次洞察分析提效10倍以上,解放业务同学的生产力。在文本中,我们也将会介绍CCO数据洞察产品基于Hologres在BI查询场景的最佳实践。

体验洞察各阶段方案演变

结合业务,我们梳理了当前CCO体验洞察数据应用的几个特点:

  • 数据覆盖场景广。覆盖了从用户浏览、下单、支付、发货物流到售后退款等全链路的业务场景,数据涉及范围广。
  • 数据量较大。如交易类数据(亿级/日)、退款类数据(千万级/日)。
  • 实时时效以及多时间窗口对比诉求。如大促活动期间实时对用户Top求助场景是否异常的判断,涉及多种窗口(环比、同比、历史同时段、活动期同时段等)对比,来进行影响面评估和预警布防。
  • 数据监控周期长。如大促期间的售后情况洞察,因为售后期较长,往往会锁定大促周期的订单,观察后续N天的退款、纠纷数据变化。数据需刷新的周期长。
  • 大量的快照类特征诉求。如分析用户咨询时刻的交易状态、物流状态等特征分布,用以分析用户求助的真实诉求。

因此在整体数据方案落地的过程中,如何快速响应业务不断变化的需求,同时考虑业务上的数据特点,选择相对稳定且高可用的方案是我们需要面对的问题。这里主要经历了三个阶段。

阶段一:预计算聚合Cube(MOLAP)+ADB加速查询

这个阶段还未支持实时的洞察能力,采用的方式是比较常规的预计算聚合Cube结果集,即在MaxCompute侧将所需要的交叉维度指标预计算好,形成一个ADS层的聚合指标结果宽表,通过外表或者DataX工具将聚合结果写入到OLAP引擎加速查询。此阶段CCO较为主流的OLAP引擎选型主要是ADB、MySQL等。这种方案在应对较少且相对稳定的维度和指标组合时较为适用,因为结果已经预计算好,只需要针对结果表进行简单聚合计算,ADB也提供了稳定的查询加速能力。以下为整体数据链路结构的简单示意图:

但是随着业务场景的更加复杂化,存在的问题也极为明显:

  • 灵活度差,扩展成本高。当业务上要增加新维度或指标时,需要在MaxCompute应用层多层添加逻辑、修改表结构并且需要回刷数据,数据的扩展成本十分高。
  • 数据量易爆炸。因为预计算的结果集最细粒度是所有维度的枚举值交叉,只要某几个维度枚举值比较多的话,交叉后的数据量就会存在大幅膨胀的可能,甚至膨胀到交叉后远大于明细数据量级的情况。
  • 行业回刷成本高。因为维度特征预计算好的原因,类似淘系行业调整等较为常见的因素带来的回刷无法避免。每一次行业调整,为了保证行业的准确性,都会需要一次全量的回刷。
  • UV类去重指标无法精确计算。遇到UV等需要去重计算的指标,因为预计算按照维度最细组合计算,再次聚合的时候不可避免会出现结果膨胀,无法精确的实现去重计算。
  • 数据回流时间长。离线数据通过Shell脚本操作外表或者DataX同步任务方式回流ADB,在数据量较大的时候同步时间长,并且在回流高峰的时候,因为槽位资源打满,容易频繁出现任务超时、出错,甚至库抖动等问题,维护成本较高。

阶段二:实体ID轻度汇总事实表+维度表关联查询

这个阶段实时化洞察已经在很多场景有较强的诉求,故需要同时结合实时链路来考虑方案。方案一不适合实时链路的建设,主要在于预计算的多维汇总宽表难以确定PK,一旦维度组合发生变化,PK需要重新定义,无法稳定的支持upsert/update操作。

所以在这个阶段主要针对扩展性灵活性等问题重新设计了方案。主要的思路是不做维度的预计算,而是抽取洞察场景内事实表的实体对象ID,构建基于这些实体对象ID的轻度汇总DWS指标层,然后将DWS指标事实表和实体对象的DIM表直接写入到OLAP引擎,在数据服务或者FBI数据集这一层直接join查询。

以共享零售为例,业务的本质是买家下单,货从卖家流转到买方。这里的参与的对象有商品、商家、买家、骑手等,我们构建以商品ID+商家ID+买家ID+骑手ID的联合主键,计算在这个主键下的各业务模块的指标汇总事实表,然后利用OLAP引擎的强大的交互分析能力直接关联事实表和维表做多维分析查询。数据链路结构的简单示意图如下:

这种方案对比方案一解决了扩展性问题,提升了灵活度,维度的扩展只需要简单调整维表即可,遇上行业的调整甚至无需做任何处理;同时PK稳定,也能支持到实时upsert。但也因为数据展现端关联查询逻辑复杂,性能上对OLAP引擎要求较高。存在的问题可以总结为以下几点:

  • 大数据量下性能较差。数据应用端大量的join操作,尤其PK不相同无法走Local Join,在数据量较大的场景如淘系业务里,性能难以支持。
  • UV类去重指标无法精确计算。本质上指标值
课程简介:  本项目课程是一门极具综合性和完整性的大型项目课程;课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。 本课程项目涵盖数据采集与预处理、数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。  拒绝demo,拒绝宏观抽象,拒绝只讲不练,本课程高度揉和理论与实战,并兼顾各层次的学员,真正从0开始,循序渐进,每一个步骤每一个环节,都会带领学员从需求分析开始,到逻辑设计,最后落实到每一行代码,所有流程都采用企业级解决方案,并手把手带领学员一一实现,拒绝复制粘贴,拒绝demo化的实现。并且会穿插大量的原创图解,来帮助学员理解复杂逻辑,掌握关键流程,熟悉核心架构。   跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建......逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。  由于本课程不光讲解项目的实现,还会在实现过程中反复揉和各种技术细节,各种设计思想,各种最佳实践思维,学完本项目并勤于实践的话,学员的收获将远远超越一个项目的具体实现,更能对大型数据系统开发产生深刻体悟,对很多技术的应用将感觉豁然开朗,并带来融会贯通能力的巨大飞跃。当然,最直接的收获是,学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER课程模块: 1. 数据采集:涉及到埋点日志flume采集系统,sqoop业务数据抽取系统等; 2. 数据预处理:涉及到各类字典数据构建,复杂结构数据清洗解析,数据集成,数据修正,以及多渠道数据的用户身份标识打通:ID-MAPPING等;3. 数据仓库:涉及到hive数仓基础设施搭建,数仓分层体系设计,数仓分析主题设计,多维分析实现,ETL任务脚本开发,ETL任务调度,数据生命周期管理等;4. 数据治理:涉及数据资产查询管理,数据质量监控管理,atlas元数据管理系统,atlas数据血缘管理等;5. 用户画像系统:涉及画像标签体系设计,标签体系层级关系设计,各类标签计算实现,兴趣类标签的衰减合并,模型标签的机器学习算法应用及特征提取、模型训练等;6. OLAP即席分析平台:涉及OLAP平台的整体架构设计,技术选型,底层存储实现,Presto查询引擎搭建,数据服务接口开发等;7. 数据服务:涉及数据服务的整体设计理念,架构搭建,各类数据访问需求的restapi开发等;课程所涉及的技术: 整个项目课程中,将涉及到一个大型数据系统中所用到的几乎所有主要技术,具体来说,包含但不限于如下技术组件:l Hadoopl Hivel HBasel SparkCore /SparkSQL/ Spark GRAPHX / Spark Mllibl Sqoopl Azkabanl Flumel lasal Kafkal Zookeeperl Solrl Prestop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值