京东智慧物流在数据应用方面,主要是基于大数据预测分析技术实现智能化的调度、决策,提升物流效率,最终提升客户的体验。但面对亿级数据的业务场景,将会面临着不同的问题和不同的处理方案。今天讨论了京东物流在亿级数据管理和应用方面,利用 Apache Doris 进行的探索和实践。
首先和大家分享下京东物流业务的需求和亿级数据自助应用的背景。介绍京东物流经营数据发展路线,底层数据的演进思路,业务对于数据诉求迭代。
京东物流除了包括快递服务的仓、运、配三个环节外,它的一体化供应链物流服务,则更多是基于对商品销售和供应链的理解,合理规划仓网,分布库存,提前将用户需要的货物储存到其在全国范围数百个不同等级的仓库中。当用户下单后,商品将直接从最近的仓库送达站点,开始配送。用户下单后,快递公司会通过干线网络,将货物运输至对应的区域,再分发至配送站点进行配送。这些服务以一体化解决方案的形式提供予客户,满足客户的各种需求,业务极其复杂。
对于我们数据侧的建设工作者来说,会遇到各种各样的现实问题:
① 生产系统
是指在正常情况下支持单位日常业务运作的信息系统。它包括生产数据、生产数据处理系统和生产网络。
② 数据仓库
是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
③ 数据集市
是基于京东数据仓库和大数据平台构建的面向各 BG/BU 的数据环境,为各 BG/BU 提供数据应用服务,包含 CFO、CMO、COO、MOBILE 等数据集市。
④ 应用系统
是指可以发挥数据价值去辅助用户更优地做决策(甚至行动)的一种产品形式。
每个公司的业务数据和财务数据是天然割裂的状态。举例来说,一家全国规模的连锁店,每个店的店员的薪资和日程运营的费用(如水电费)怎么来反映到每一单上面去,如何把业务数据和财务数据打通,这有点像银行的分润,把业务数据规范到每一个环节对应的每个功能点上去,即成本因素和收支因素的影响点,再把数据再给分担上去。这也就是基础模型搭建的一个过程,最终会支撑到上游资金分析体系的客户的分析和成本支持。
标准化后的管理侧数据口径、颗粒度及维度将全面满足企业对精细化、实时化业财分析的要求,为业务财务出具专业的分析与报告提供数据支撑。同时,可复用的、具备公共能力的标准数据将支持企业在价值链条上建立多维分析架构,利用多层次、可交叉的分析直接加强企业对业务信息的钻取能力,推动业务洞察和管理智能化。
数据可视化、灵活分析迫在眉睫,权限管理,数据安全需要保障。
在数据导出控制方面:
存在的隐患:
数据导出至本地电脑,并做分析;数据导出后,无法做跟踪控制。导出次数达 3000 次/周。
解决方案:
在数据权限控制方面:
存在的隐患:
解决方案:
与业务用户代表组成调研小组,对后续工具选型进行调研:
目前京东物流数据探索领域分析工具的目标以及当前目标现状的分析,包括:
现状情况:
突出问题:
临时方案:
长期方案:
分析工具目标:
当前问题详解:
由前面的分析,总结了分析工具的功能矩阵:
数据从无到有,从有到准,从准到全,每个阶段都会面临不同的业务诉求,需要紧跟业务变化做迭代。
领航中分析师报表,为保证灵活性多通过报表工具(京东动力)配置实现,以 Presto 作为计算节点,以 BDP 大数据平台作为数据存储架构。但计算资源和存储资源均是共享模式,无法通过扩资源的方式有效的提升查询效率,严重影响用户体验,急需改变。
常用的表管理操作,包括:
① 表创建
② 添加分区
ALTER TABLE table_name ADD PARTITION IF NOT EXISTS p20200803 VALUES [('2020-08-03'), ('2020-08-04'));
③ 删除分区
TRUNCATE TABLE table_name PARTITION(p20200803,p20200804
注意事项:
常用的数据导入操作,包括:
① 转换导入表格式
② Broker Load
③ 追踪导入状态
show load from jddl_test where label = 'app_ea_pal_vender_all_sum_m_20201101_183213_19688970430' \G
注意事项:
-t 表示的是待推送数据的表名【该参数是必选,如果不选会报错】
-c 表示的是待推送数据的列名【该参数是可选,如果不选会默认推送所有列,建议不选择】
-n 表示的是推送多长时间的数据【需要与参数-e 联动使用,如果不填写,默认推送 1 天的数据】
-e 表示的是脚本数据推送的日期【默认是昨天,该参数一般是追历史数据时使用,比如今天是 2020-05-08 日,默认推送 20200507 日的数据,如果指定了-n 参数的话推送的就会是 20200507-n 天至 20200507】
-d 表示对 doris 数据库的表进行操作【默认参数是:db_null 不执行建表】db_get_crt:表示打印出 doris 建表语句,该逻辑会读取 hive 中的表结构,然后将 HIVE 中的字段为 string 类型的当成维,int,bigint,double 类型的当成值生成建表语句【具体逻辑请参考脚本】
db_reset :表示重建表,如果调整表结构后,需要使用这个参数重构 doris 表结构【如果指定了-c 参数,记得增加列】
db_drop :表示删除 doris 中对应的表,用于下线任务
db_create :如果不存在对应的表就创建表,如果存在表就打印表结构下面,重点分享下纵向联邦学习和横向联邦学习。
注意事项:
通过动力连接数据库,把对应的表按照权限管理配置成数据源,在数据源上创建应用,可以让业务人员在 10 分钟搭建起符合自己预期的分析报表。
子查询如果没有生效 rollup,外层是无法生效。
技术迭代是手段,对业务发展起促进作用才是目的,如何通过技术的升级实现业务技术相互促进。
BDP 是一个公共平台,支持开发人员、分析师以及业务人员做数据查询,业务是不断变化增长的,业务部门分析也会随着对业务的理解程度不断深入,但是实际的物理资源不能无限制扩容。基于此,每天的重要任务 SLA 保障是数据团队面临的最大挑战,并且随着业务发展会愈发严重。这就需要做系统规划:
随着业务的不断成熟,对精细化运营有了新的要求,会涉及到各方业务系统的迭代,数据处理需要夯实底层架构。
独木不成林,任何一个项目的成功都是团队配合的结果。在团队建设之初,团队的人员相对较少,对接的业务也相对聚焦,从 0 到 1 的数据建设过程中一定是采用“纵向”的开发方式——一个数据开发对接一个条线,对当前条线从头到全盘负责,实现高速迭代。这个阶段会形成团队核心价值,当各业务方都认可这种数据分析思路,随之而来的就是业务需求膨胀,不同主题之间的横向拉通分析,组内人员的补充等。如何做到人员价值最大化,则需要投入精力在团队建设上,主要包括:
本文转载自:DataFunTalk(ID:dataFunTalk)
领取专属 10元无门槛券
私享最新 技术干货