作者:哈九,菜鸟裹裹数据研发
无刃,菜鸟裹裹数据研发
夏招,菜鸟裹裹数据产品
菜鸟寄件业务当前为菜鸟的基础设施建设业务,是用户与【菜鸟】品牌最直接最基本的认知联系。通过与三通一达等巨头快递公司合作,降本增效,数字化、智能化的推动了中国快递行业腾飞。在新的一年里,菜鸟裹裹更是【做物流行业数字化转型的引擎】这一菜鸟大愿景的践行者。目前裹裹寄件日常寄件订单量百万级别,且双十一等大促期间订单量更是成倍增长。
智能化履约过程及不断精益化的业务系统,菜鸟裹裹团队急需一套一体化的数据产品,能够智能化、专业化、高效化的解决日常遇到的数据问题与需求,并在日常的数据监控与效果分析的过程中,用数据影响业务决策。基于业务越来越频繁的数据需求及数据应用,我们使用Hologres构建万能查产品,一劳永逸的解决业务汹涌的需求与各种口径、降本增效等问题。
通过本文我们将会介绍菜鸟裹裹基于Hologres构建万能查产品的最佳实践。
一、菜鸟裹裹数据旧时代的迷雾1.冗余建设,数据口径等差异导致的数据不准菜鸟裹裹寄件业务发展至今,已经历过多轮的业务方向调整以及组织架构的变动,必然会存在极重的数据历史包袱。各类数据指标根据业务类型、运营模式的不同分散于不同的看板模块,效果分析关联度低;或同时多数据看板重复建设,类型过度细分,找数难,直接影响业务分析效率及体验感。此外,业务和BI所面对的分析场景、汇报对象、实际目标的不同,对于同一个指标可能存在多版本多角度的统计口径,易出现数据口径等细微差异导致的数据不准的情况,导致了数据同学日益繁重的“找茬”工作。若再不协同各方梳理指标口径,确定口径定义模式,统一底层数据,删减冗余看板,最后压死数据同学的将是任意一个不知名的“包裹”。
2.数据开发周期长,阻碍发展进度早期的数据产出常常以需求为导向,以快速满足业务分析为目的。因此之前协作模式,主要为业务提出取数需求,分析现有数据看板是否支持,若无法支撑则重新搭建,并未将数据产品化。快速发展的业务必然会衍生出新的分析维度,目前固化的数据看板无法快速应对,同时也没有业务可自助查询数据的统一入口,数据分析进度与数据开发周期强绑定,从而导致业务常常不得不停下来等数据,对业务进度上造成了一定的阻碍。
3.查询速度慢,业务体验差离线数据分析和业务看板目前存在两种常规设计方案,如下图所示:
业务发展处于高速发展阶段,裹裹寄件运营模式在快速试验快速试错的过程中急需数据中台提供强有力的支持。个性化推荐、敏捷分析,大数据的应用在这个时代创造了很多千亿级别的现象级公司,可见于此业务发展迅速膨胀,若数据中台依旧保留一对一的数据服务模式,服务速度将远远跟不上时代的前进脚步。目前迫切于找到应对指数级增长的数据需求的出路,打造一套一体化的数据产品,智能化、专业化、高效化的解决日常遇到的数据问题与需求,真正做到数据赋能,驱动寄件模式升级。
2.在降本增效大背景下的人效匹配问题业务核心诉求是通过数据化产品快速监控分析,看清局部业务现状并作出决策,并不在乎如何取数。数据计算过程,易造成数据过于定制化、灵活性差、分析维度不全面等问题。若后续出现同类取数分析需求,需增加新维度或指标时,数据同学需重新开发代替迭代,重启新看板模块,成本高、效率低、排期长,业务抱怨不断,与开始快速响应业务快速看数需求目的相悖。兼顾成本和体验,释放人力的同时保证业务同学可快速自助获取数据,是一个迫在眉睫的问题。
三、迎难而上:Hologres的选择,万能查的诞生1.裹裹稳定的业务形态目前裹裹寄件日常寄件订单量百万级别,且双十一等大促期间订单量更是成倍增长,其主要业务模式为收到各端寄件的需求(信息流),然后将寄件需求单分发给合作的快递公司网点及小件员(三通一达),小件员在包裹侠上接单/消费者到站寄件;包裹揽收后消费者完成运费支付,快递交付于第三方物流完成运输配送。
2.Hologres的强大之处Hologres是一站式实时数据仓库引擎,支持海量数据实时写入、实时更新、实时分析,与MaxCompute、Flink、DataWorks深度融合,提供离在线一体化全栈数仓解决方案,广泛应用在实时数据中台建设、精细化分析、自助式分析、营销画像、人群圈选、实时风控等场景。HOLO的主要特性有:
通过目前现有的数据支撑能力,依赖Hologres引擎,将裹裹寄件常用且稳定的维度和指标封装于万能查中。用户可根据自己的需求筛选字段,定制化自己的报表,快速自助完成运营数据分析。基于一体化数据分析产品「万能查」,突破目前数据产品的壁垒,达到降低成本、提高效率、保证数据准确性、完成体验升级的目的。
产品需求设计过程中,会接受到不同的用户各种的个性化诉求。业务团队主要将运营过程划分为订单运营和用户运营,而不同的需求会有不同视角和粒度的看数诉求。另外,由于淘退订单的业务特殊性,需基于全局淘退订单进行分析,订单视角存在较大的区别。因此针对用户的个性化需求,以及实际业务场景,我们将万能查划分为三大模块:订单,用户,淘退,设计多款万能查产品。
2.数据架构设计基于数据量大、周期长、链路范围广、维度特征多等业务需求特点,且结合Hologres存储费用高等问题。我们整体万能查设计结构如下:
Hologres提供了Distribution Key、Segment Key、Clustering Key、Bitmap Columns等一系列的索引方式对表进行优化,合理的使用各类索引,可以大幅提升使用性能。
基于裹裹寄件业务导入数据为轻度汇总无唯一主键且无自增/类自增字段的特性,不设置Distribution Key以及Segment_key,采用随机分发到shard的模式,其中,设计Segment_key索引中会存在一个误区,是指定具备递增逻辑列,区别于ds分区字段,同时设置分段列需排序后写入,才会生效。
此外,由于用户存在多种等值过滤查询场景,经过统计分析经常用在Filter和Range场景的字段,我们将使用次数相对较多的字段“业务子类”设置为聚簇索引Clustering Key,其余分析维度设置Bitmap,如揽件网点,运力类型,发货城市等信息。
CALL SET_TABLE_PROPERTY('"public".holo_adm_ord_1d', 'orientation', 'column');
CALL SET_TABLE_PROPERTY('"public".holo_adm_ord_1d', 'clustering_key', 'send_sub_type');
CALL SET_TABLE_PROPERTY('"public".holo_adm_ord_1d', 'bitmap_columns', 'fac_id,fac_name',...);
CALL SET_TABLE_PROPERTY('"public".holo_adm_ord_1d', 'time_to_live_in_seconds', '34560000');
2)动态分区回刷设计
由于采用了Hologres分区表的设计方式,但在ODPS数据回流至Hologres时,Hologres分区表无法直接向父表插入数据,需依次删除并重建分区子表,将数据插入分区子表中,实现分区父表动态更新数据,且当前不支持python/shell等脚本循环调度Hologres SQL实现数据回刷。实现Hologres的分区表动态分区式更新回流数据,即循环执行Hologres分区表脚本将数据回流至每一个分区子表。(了解到后期holo1.3版本上线,将支持动态分区管理,离线将支持动态写入,且可支持并行补数据。)
3)其它设计Table Group的设置一般根据数据规模、访问特性、资源规格和使用重心(Join频次)等综合考虑。需要关联的表放入同一个Table Group,通过Local Join减少数据的Shuffle,可极大提升查询效率。一定范围内,Shard Count可以提高数据写入和查询分析处理的并行度。但大量的Shard数需要更多的节点间通信资源、计算资源以及内存资源支撑,从而导致资源浪费。
目前,裹裹寄件轻度统计层数据,数据来源统一,表单分区一般在数千万行量级,一般做灵活多维度汇总,并发不高,且无需做多流join。因此选择默认Shard Count为12,不做特殊修改。
4.产品展示目前运营决策、产品策略的效果分析关联度分析能力还比较弱,能较大程度的满足业务方全局监控分析的需求,但却无法精细化感知指标数据的波动以及产品变更与数据波动的因果关系。对于数据变化的业务能力升级,将是产品接下来迭代的重点方向;
2.时效升级目前产品主要是基于离线数据设计,但是存在较多的实时数据查询需求,如疫情预警时,需依赖实时/小时数据取出截止当前时段的包裹明细。我们后续可以读取Hologres Binlog或者TT/MQ消息,利用Flink的流处理能力,通过查询持久化存储的Hologres维表补全模型字段,构成明细表,写入到Hologres分区的当日实时分区;并在T 1日我们通过Hologres的外表导出的功能,将T日实时写入的这类快照状态字段从Hologres导出到ODPS做持久化离线存储,充分利用Hologres资源。
最后:
菜鸟裹裹数据产品设计任重道远,Hologres在数据产品上的应用范围非常广泛,万能查只是该数据引擎的探路者,中间碰到了各种各样的问题,包括模型设计、性能调优等,感谢数据团队同学在数据技术和Hologres架构等方面的支持和帮助,未来我们也将会持续使用共建。
Copyright © 2008-2022 秒下下载站
m.down10s.com .All Rights Reserved