闲鱼商品理解数据分析平台——龙宫

本文涉及的产品
表格存储 Tablestore,50G 2个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 数据分析平台助力运营,中流砥柱

作者:闲鱼技术——故渊

引言

闲鱼是一个以C2C为主的平台,区别于B端的用户,C端卖家在发布商品时更倾向于图+描述的轻发布模式,对于补充商品的结构化信息往往执行力和专业程度都不高,这为我们的商品理解带来了很大的困难。为了能够在发布侧获得更多的商品结构化信息,我们开始尝试在原有图+文的极简发布模式中加入商品关键属性的补充选项,事实证明,适当的结构化属性选项并不会影响用户的发布体验,却能极大地提升我们对商品理解的能力。然而存在以下问题:
在设定结构化属性选项时,往往强依赖行业运营的经验,缺少实时的、多维度的数据分析手段。虽然离线产出的数据报表能够在一定程度上统计某些关键指标,但对于精细的、个性化的数据查询需求,离线报表扩展性和性能都不足。
基于上述问题,我们搭建了龙宫数据分析平台。

龙宫数据分析平台的定位与总体框架

区别于数据报表,我们在设计龙宫数据分析平台时主要考虑了以下方面:

  1. 实时性要求,当运营上线新策略或因服务问题线上出现数据波动时,我们希望能够实时地分析出结构化类目属性在这段时间内的覆盖情况,以帮忙运营做进一步的决策。
  2. 多维度要求,闲鱼目前拥有8000+的叶子类目,不同行业运营的侧重点各不相同,数据分析平台要能够满足个性化的数据分析需求。
  3. 数据管理要求,闲鱼的类目属性、SPU数据、运营策略需要一个统一管理的地方。

我们希望以此实现结构化数据对运营的反哺,构成商品结构化数据生产与应用的闭环。
龙宫整体.svg
总体分层框架如下:
龙宫结构图.svg

数据链路建设

构建数据分析平台的关键是数据链路的建设,在闲鱼,结构化数据主要分为在线数据(通过发布、编辑入口用户直接填写的数据)和离线数据(通过后置算法模型分析商品的图文获取的数据)。数据链路的建设存在以下关键难点:

  • 存储数据量大(全量20亿+),访问QPS高(1.5万+),服务稳定性要求高。
  • 数据来源多(10余种),各来源数据异构,存在重复、冲突的数据,数据实时性要求高(秒级延迟)。
  • 数据分析场景复杂(QPS小,但sql复杂度高),普通数据库查询难以支撑。

针对数据量大和QPS高的问题,我们选用tableStore作为存储商品结构化信息的数据库,它一种典型的列存储数据库,具有扩展性好、可用性高、单机可支撑QPS上万的特性,非常适合作为大数据的存储终端。其可用性可达99.99%,同时具有主备双库能力。
同时我们在线数据存储在mysql的商品表中,通过在java应用中监听表的变更将数据写入数据源表;离线数据通过ODPS+MQ的方式将数据传入算法模块,并通过blink将算法结果写入数据源表。由于在线离线的多来源数据可能存在重复、冲突的问题(同一商品算法A识别为iphone 12而算法B识别为iphone 11),所以在系统设计时我们使用源表来存储所有的原数据,使用终表来存储加工融合之后的数据,加工融合的策略是产品、运营可决策的。
分析数据我们使用的是分析型数据库ADB,ADB在存储容量、单机查询QPS方面都远不及tableStore,但它在复杂sql的运行、实时索引创建、冷热数据隔离等方面拥有其他数据库不及的性能,是数据分析库的较好选择。
数据图.svg

离线异构数据源的接入

在闲鱼,结构化数据不仅仅来自于发布时的卖家填写,正如前面所说,闲鱼的C端卖家在填写结构化属性的专业程度和执行力都远远不及淘宝天猫的卖家,所以我们通过图文多模态的算法,在发布的后置链路中为商品补充很多结构化的属性(这部分cpv目前占大盘覆盖率的一半左右,不同类目情况不同)。接入这些离线数据具有以下难点:

  • 各个数据具有结构不同、产出时间不同、数据量级大的特征,难以复用相同模式,接入新数据源的成本高。
  • 数据同步任务分散,难以做统一监控。

针对这些难点我们设计了一套离线异构数据源统一接入的方案:
image.png
各个算法的离线数据存储在ODPS中,各个算法的数据格式不一样,数据的分区也不同,所以先通过一个ODPS的同步任务将各数据源数据统一到一张结构化标准标签表idle_kgraph_std_source中。表结构如下:

key json格式的数据,key为主键列名,value为主键值
data json格式的数据,每个key对应tableStore源表中的一列,value为需要写入该列中的值
scene 分区字段,该数据来源于何种场景
source 分区字段,该种场景下的数据来源

表中key为主键信息,因为不同场景的数据主键不一样,所以这里设计为开放式的主键,数据为json格式,key为主键列名,value为主键值。结构化标准表idle_kgraph_std_source通过一个Blink任务实时同步到tableStore的各个场景的数据表中。在Blink任务中,根据scene和source字段将数据进行分发,根据data中的key将数据路由到tableStore表中的不同列。同时为了提升效率,减少在Blink任务中写数据库的次数,拿到数据后,先对数据进行合并操作,将同种场景(例如结构化属性数据)的多来源数据合并成一条,再进行写操作。
通过这套方案,我们成功解决了多数据源接入中数据难以收口,难以统一监控的问题,同时,数据标准表中开放式数据格式的设计使得新数据源能够快速接入,极大地降低了重复开发的成本。

数据加工融合

在获取到多来源数据之后,我们需要对数据进行加工融合,融合的策略是由产品和运营共同决定的,在变更策略时,存量的商品数据也需要重新进行加工融合,所以数据加工融合链路必须具备增量处理稳定,全量处理快速的特点。
image.png
在进行全量处理数据时,利用分布式任务调度系统,主任务节点通过数据库的分片将全量数据划分成多份,并将数据索引下发给各个子任务节点,由子任务进行数据拉取,使数据拉取与处理不受数据库的物理分区与通道限制,大大提升性能,目前6亿全量数据处理仅需40min。任务的分发策略如下:
image.png
总的来说,主要解决以下问题:

  • 分布式任务分发,分布式完成全量任务。
  • 操作幂等,操作可以重复,但不影响最终结果。
  • 全量增量彼此隔离,不影响在线服务

数据分析模块设计

在数据分析的场景中,大量涉及到正逆排序、按某指标过滤的频繁查询,如果对每一次数据分析请求都做一次完整的数据查询,对数据库会造成较大压力。
所以设计数据分析模块时,我们将请求的分析条件分为两类:

  • 维度分析条件:根据不同的维度,需要运行不同的查询逻辑。会通过一个Distributor将分析请求路由到不同的processor中执行。
  • 筛选排序条件:这些条件不影响查询的逻辑,只会在查询的结果中进行排序或过滤,针对这种情况我们会优先从缓存获取结果,并在内存中进行排序过滤,以提升分析性能。

数据查询.svg
基于上述的方案,可有效降低数据分析查询的成本,使查询平均效率提升50%以上。

效果

目前龙宫平台已推广至行业运营、闲鱼搜索、闲鱼首页推荐等场景,取得了阶段性效果:

  • 为行业运营提供8000+叶子类目属性维度的数据分析,助力运营决策结构化选项在闲鱼主发中的透出,帮忙其为闲鱼结构化大盘贡献8成类目覆盖,一半核心cpv覆盖。
  • 为搜索、推荐等场景提供快捷的查询手段,帮助开发、算法同学实时定位线上问题,实现秒级延迟。大大提升了badcase归因定位效率。

image.png
image.pngimage.png

展望

我们致力于将龙宫打造成一个全面、灵活、准确的商品理解数据平台,接下来我们将主要针对以下方面继续优化:

  • 与商品发布、成交大盘对接,接入商品诊断能力,提供更多维度的数据分析能力,推广场景覆盖,助力更多的产品、运营快速决策。
  • 增加更多、更直观的数据表现形式,优化界面与UI设计。
  • 增加用户维度的数据分析能力,与算法对接,将数据分析的结果反哺算法,使得算法模型能预测出准确、个性化的类目属性。
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3天前
|
数据采集 监控 数据挖掘
常用电商商品数据API接口(item get)概述,数据分析以及上货
电商商品数据API接口(item get)是电商平台上用于提供商品详细信息的接口。这些接口允许开发者或系统以编程方式获取商品的详细信息,包括但不限于商品的标题、价格、库存、图片、销量、规格参数、用户评价等。这些信息对于电商业务来说至关重要,是商品数据分析、价格监控、上货策略制定等工作的基础。
|
1月前
|
SQL 存储 数据挖掘
快速入门:利用AnalyticDB构建实时数据分析平台
【10月更文挑战第22天】在大数据时代,实时数据分析成为了企业和开发者们关注的焦点。传统的数据仓库和分析工具往往无法满足实时性要求,而AnalyticDB(ADB)作为阿里巴巴推出的一款实时数据仓库服务,凭借其强大的实时处理能力和易用性,成为了众多企业的首选。作为一名数据分析师,我将在本文中分享如何快速入门AnalyticDB,帮助初学者在短时间内掌握使用AnalyticDB进行简单数据分析的能力。
54 2
|
4月前
|
供应链 数据挖掘 Serverless
【python】美妆类商品跨境电商数据分析(源码+课程论文+数据集)【独一无二】
【python】美妆类商品跨境电商数据分析(源码+课程论文+数据集)【独一无二】
【python】美妆类商品跨境电商数据分析(源码+课程论文+数据集)【独一无二】
|
4月前
|
Kubernetes 并行计算 数据挖掘
构建高可用的数据分析平台:Dask 集群管理与部署
【8月更文第29天】随着数据量的不断增长,传统的单机数据分析方法已无法满足大规模数据处理的需求。Dask 是一个灵活的并行计算库,它能够帮助开发者轻松地在多核 CPU 或分布式集群上运行 Python 代码。本文将详细介绍如何搭建和管理 Dask 集群,以确保数据分析流程的稳定性和可靠性。
314 3
|
4月前
|
机器学习/深度学习 前端开发 数据挖掘
基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型
本文介绍了一个基于Python Django框架开发的房价数据分析平台,该平台集成了多种机器学习模型,包括线性回归、SVM、GBDT和BP神经网络,用于房价预测和市场分析,同时提供了前端大屏展示和后台数据管理功能。
121 9
|
4月前
|
自然语言处理 数据挖掘 BI
ChatGPT 等相关大模型问题之将现有的数据分析平台与大模型结合如何解决
ChatGPT 等相关大模型问题之将现有的数据分析平台与大模型结合如何解决
|
5月前
|
存储 Java 数据挖掘
构建基于Spring Boot的数据分析平台
构建基于Spring Boot的数据分析平台
|
5月前
|
存储 NoSQL Java
使用Java实现高效的数据分析平台
使用Java实现高效的数据分析平台
|
5月前
|
存储 分布式计算 NoSQL
Java中的高效数据分析与处理平台实现
Java中的高效数据分析与处理平台实现
|
6月前
|
存储 数据可视化 Java
使用Java实现可视化数据分析平台
使用Java实现可视化数据分析平台