【Doris】京东物流基于 Doris 的亿级数据自助探索应用

图片

**导读:**京东智慧物流在数据应用方面,主要是基于大数据预测分析技术实现智能化的调度、决策,提升物流效率,最终提升客户的体验。但面对亿级数据的业务场景,将会面临着不同的问题和不同的处理方案。今天讨论了京东物流在亿级数据管理和应用方面,利用Apache Doris进行的探索和实践。

01

业务场景介绍

首先和大家分享下京东物流业务的需求和亿级数据自助应用的背景。介绍京东物流经营数据发展路线,底层数据的演进思路,业务对于数据诉求迭代。

1. 业务需要什么

图片

京东物流除了包括快递服务的仓、运、配三个环节外,它的一体化供应链物流服务,则更多是基于对商品销售和供应链的理解,合理规划仓网,分布库存,提前将用户需要的货物储存到其在全国范围数百个不同等级的仓库中。当用户下单后,商品将直接从最近的仓库送达站点,开始配送。用户下单后,快递公司会通过干线网络,将货物运输至对应的区域,再分发至配送站点进行配送。这些服务以一体化解决方案的形式提供予客户,满足客户的各种需求,业务极其复杂。

对于我们数据侧的建设工作者来说,会遇到各种各样的现实问题:

  • 早:海量数据的多维查询已经成为常态,高时效保障是业务的最新追求,甚至要求实时;

  • 散:数据存储在不同的业务系统,各个系统没有标准的数据规范, 数据重复建设;

  • 重:日报、周报、半月报、月报等工作效率低,部分重复工作多,数据统计费时费力;

  • 慢:全国区域、战区以及各产品群数据场景多样,无法快速响应数据变化;

  • 缺:缺少统一的数据资产管理,运营人员无法方便、快捷地进行统一的数据分析;

  • 难:领导获取数据难, 营销投入产出比衡量难,数据驱动业务难,数据价值挖掘难。

2. 当前有什么

图片

① 生产系统

是指在正常情况下支持单位日常业务运作的信息系统。它包括生产数据、生产数据处理系统和生产网络。

② 数据仓库

是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

③ 数据集市

是基于京东数据仓库和大数据平台构建的面向各BG/BU的数据环境,为各BG/BU提供数据应用服务,包含CFO、CMO、COO、MOBILE等数据集市。

④ 应用系统

是指可以发挥数据价值去辅助用户更优地做决策(甚至行动)的一种产品形式。

3. 数据团队怎么做:业财数据体系建设

图片

每个公司的业务数据和财务数据是天然割裂的状态。举例来说,一家全国规模的连锁店,每个店的店员的薪资和日程运营的费用(如水电费)怎么来反映到每一单上面去,如何把业务数据和财务数据打通,这有点像银行的分润,把业务数据规范到每一个环节对应的每个功能点上去,即成本因素和收支因素的影响点,再把数据再给分担上去。这也就是基础模型搭建的一个过程,最终会支撑到上游资金分析体系的客户的分析和成本支持。

标准化后的管理侧数据口径、颗粒度及维度将全面满足企业对精细化、实时化业财分析的要求,为业务财务出具专业的分析与报告提供数据支撑。同时,可复用的、具备公共能力的标准数据将支持企业在价值链条上建立多维分析架构,利用多层次、可交叉的分析直接加强企业对业务信息的钻取能力,推动业务洞察和管理智能化。

02

面临的困境

数据可视化、灵活分析迫在眉睫,权限管理,数据安全需要保障。

1. 数据可视化建设

图片

在数据导出控制方面:

存在的隐患:

数据导出至本地电脑,并做分析;数据导出后,无法做跟踪控制。导出次数达3000次/周。

解决方案:

  • 长远解决方案:用户需求反哺,沉淀方法论,线下分析报表化,支持自助探索。

  • 短期解决方案:导出时,弹窗提醒法律风险;导出形成账单,并每月发送给区总了解。

在数据权限控制方面:

存在的隐患:

  • 分析权限:因历史积累,访问大数据开发分析平台的权限不匹配当前安全要求。例如,有些业务分析师可以访问库内全量表,未区分区域;

  • 指标权限:指标的访问权限控制散落在各系统管理,无法做到统一控制,容易混乱和遗漏。

解决方案:

  • 分析权限:梳理BDP访问权限,按照业务特性缩小访问范围,并制定岗位权限白皮书;

  • 指标权限:指标出口由统一数据API进行控制,指标查看权限设置由指标收口人在资产管理平台统一设置。

2. 工具论证

图片

与业务用户代表组成调研小组,对后续工具选型进行调研:

  • 内部工具调研,京东动力目前处于快速迭代阶段,调研现阶段支持功能,定制化开发的相应速度;

  • 外部工具调研,从成本,市场成熟度,产品易用性,扩展性,性能等多维度交叉比对市场主流BI工具的优缺点;

  • 内外部工具对比,业务方、产品经理以及研发三方组成专家评分组,对内外部工具进行评分;

  • 工具对比结论,最终确定BI工具实施方案。

3. 目标现状分析

图片

目前京东物流数据探索领域分析工具的目标以及当前目标现状的分析,包括:

现状情况:

  • 京东动力作为分析工具

  • 动力从商城数据中台引入

突出问题:

  • 性能慢:分钟级,高峰期出不来

  • 上卷、下钻等功能缺失

  • 体验不友好,拖拽繁琐

临时方案:

  • 提数,本地分析

  • 隐患:数据导出后无法跟踪

长期方案:

  • 引入更适合的工具

  • 调研:动力的计划,Tableau、永洪BI等

分析工具目标:

  • 提供便捷自助服务:一站式分析平台,集数据准备、报告制作、数据分析为一体,业务人员也能轻松、快速地制作并分析数据报告,带来业务驱动的数据分析工作模式。多维度下钻和上卷。

  • 内嵌丰富组件,上线周期短,组件丰富,可以对所有数据源进行合并、搜索、交互和分析。

  • 移动跨屏,无缝支持PC、iPhone、iPad和Android,并在这些终端设备上保持一致、易用的用户体验。

  • 高性能,秒级计算,利用列存储和内存计算,实现千万级数据分析的秒级响应;提升性能,支撑更多的分析维度和更大的数据范围。

当前问题详解:

  • 自主分析不便捷,加工链条过长,需要前端,UI,产品以及UI多方配合,资源协调困难,沟通成本较高;

  • 定制化研发投入多,定制化开发,不同维度的分析需要开发不同的汇总以及前段展示界面,底表模型变更影响范围广;

  • 图表组件不丰富,对于每种新的应用场景均需要不同的额开发集成,各功能模块之前需要联调测试,开发周期长,暂不支持移动端;

  • 无法跨屏展示&性能低,现没有APP端展示;查询依托于大数据平台资源,在业务忙时查询性能低。

4. 分析工具功能矩阵

由前面的分析,总结了分析工具的功能矩阵:

图片

03

解决方案

数据从无到有,从有到准,从准到全,每个阶段都会面临不同的业务诉求,需要紧跟业务变化做迭代。

1. 数据引擎的变迁

图片

2. 资源模式及架构优化

图片

领航中分析师报表,为保证灵活性多通过报表工具(京东动力)配置实现,以Presto作为计算节点,以BDP大数据平台作为数据存储架构。但计算资源和存储资源均是共享模式,无法通过扩资源的方式有效的提升查询效率,严重影响用户体验,急需改变。

  • 之前架构:领航+动力+PRESTO+BDP

  • 弊端

  • Presto集群无法资源隔离,易出现资源竞争;无法按业务条线对资源进行扩容;

  • 报表数据存放在BDP平台,当前集群任务多,任务运行贯穿正常工作时段,容易造成BDP平台繁忙导致报表数据读取慢的情况。

  • 解决方案:领航+动力+ DORIS

    引入新架构,资源独占;解耦BDP平台对数据展示影响

  • 效果:已借助单票分析项目完成尝试及验证

  • 查询从10秒+到秒级响应提升

  • 独立资源管控,按需优化

3. Doris表管理

常用的表管理操作,包括:

① 表创建

图片

② 添加分区

ALTER TABLE table_name ADD PARTITION IF NOT EXISTS p20200803 VALUES [(‘2020-08-03’), (‘2020-08-04’));

③ 删除分区

TRUNCATE TABLE table_name PARTITION(p20200803,p20200804

注意事项:

  • 规范分区,统一分区规则便于后续运维

  • 导入时,会同时给所有Rollup 产生数据,过多的Rollup 会影响导入性能,评估Rollup创建个数

  • 批量导入清理历史数据建议小范围多批次串行操作,合理利用资源

4. Doris数据导入:Hive2Doris通过Broker Load方式写入

常用的数据导入操作,包括:

① 转换导入表格式

图片

② Broker Load

图片

③ 追踪导入状态

show load from jddl_test where label = ‘app_ea_pal_vender_all_sum_m_20201101_183213_19688970430’ \G

注意事项:

  • LABEL:用于指定这一批次导入的label,用于后期进行作业状态查询等

  • max_filter_ratio:用于指定允许过滤不规范数据的最大比例,默认是0,不允许过滤,自定义指定应该如下:

    ‘max_filter_ratio=0.2’,含义是允许20%的错误率

  • timeout:指定load 作业的超时时间,单位是秒。当load执行时间超过该阈值时,会自动取消。默认超时时间是86400 秒。

5. 数据自动导入管理

图片

-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 :如果不存在对应的表就创建表,如果存在表就打印表结构下面,重点分享下纵向联邦学习和横向联邦学习。

注意事项:

  • 数据库特性不同天然存在融合瓶颈,新技术的引入需要有充分的预案,做到各司其职,才能让其特性得到发挥

6. 自动报表实现

通过动力连接数据库,把对应的表按照权限管理配置成数据源,在数据源上创建应用,可以让业务人员在10分钟搭建起符合自己预期的分析报表。

图片

图片

7. 待优化点:子查询对应Rollup的影响

图片

子查询如果没有生效rollup,外层是无法生效。

图片

04

未来规划

技术迭代是手段,对业务发展起促进作用才是目的,如何通过技术的升级实现业务技术相互促进。

1. 离线数据技术升级

图片

BDP是一个公共平台,支持开发人员、分析师以及业务人员做数据查询,业务是不断变化增长的,业务部门分析也会随着对业务的理解程度不断深入,但是实际的物理资源不能无限制扩容。基于此,每天的重要任务SLA保障是数据团队面临的最大挑战,并且随着业务发展会愈发严重。这就需要做系统规划:

  • 不断优化迭代底层模型,对数据做最优整合,对主题模型的数据引入生命周期管理,表现在两个方面:其一,模型随着业务有新增,也必须有消亡;其二,模型本身存储数据需要有生命周期管理,对于可追溯的分析数据制定数据保留策略,满足业务需求的同时尽量减少历史数据存储。

  • 贴合平台优化加工策略,纵观调度平台全时段运行情况,在某些时段会出现资源利用波谷,通过并行任务合理利用资源。

  • 新调度引擎引入,按照任务不同的加工场景选择不同调度引擎(Hive/Spark),以最小代价实现调入任务跑数。

2. 业务迭代技术跟进

随着业务的不断成熟,对精细化运营有了新的要求,会涉及到各方业务系统的迭代,数据处理需要夯实底层架构。

图片

  • 通用化:业财一体化融合,对成熟的业务实现到单的融合;

  • 体系化:通过各维度损益模型串联业务实际运营成本,支持业务分析,做全盘优化调优成本;

  • 清晰化:看清每个经营动作成本,减少由于分摊造成“差异性“抹平,结合业务量、收入对不同环节进行改善;

  • 灵活化:即席查询,利用新的OLAP计算框架,支持各个维度数据查看,实现不同业务层级数据的上卷、下钻。

3. 团队建设

图片

独木不成林,任何一个项目的成功都是团队配合的结果。在团队建设之初,团队的人员相对较少,对接的业务也相对聚焦,从0到1的数据建设过程中一定是采用“纵向”的开发方式——一个数据开发对接一个条线,对当前条线从头到全盘负责,实现高速迭代。这个阶段会形成团队核心价值,当各业务方都认可这种数据分析思路,随之而来的就是业务需求膨胀,不同主题之间的横向拉通分析,组内人员的补充等。如何做到人员价值最大化,则需要投入精力在团队建设上,主要包括:

  • 方法论建设:没有成熟的方法论,后续难以为继。

  • 技术提升:离线实时数据全链路的技术结合,技术要求高。

  • 项目管理:大项目周期以半年设置年计,项目投入产出科学衡量。

  • 数据权限:数据访问的细粒度的控制,基础元数据补全。

  • 人才队伍建设:需要人才梯队来保障持续数据迭代。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程总体架构请观看89讲。数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持数据仓库的应用有:1.数据分析、数据挖掘、人工智能、机器学习、风险控制、无人驾驶。2.数据化运营、精准运营。3.广告精准、智能投放等等。数据仓库是伴随着企业信息化发展起来的,在企业信息化的过程中,随着信息化工具的升级和新工具的应用数据量变的越来越大,数据格式越来越多,决策要求越来越苛刻,数据仓库技术也在不停的发展。数据仓库有两个环节:数据仓库的构建与数据仓库的应用。随着IT技术走向互联网、移动化,数据源变得越来越丰富,在原来业  务数据库的基础上出现了非结构化数据,比如网站log,IoT设备数据,APP埋点数据等,这些数据量比以往结构化的数据大了几个量级,对ETL过程、存储都提出了更高的要求。互联网的在线特性也将业务需求推向了实时化 ,随时根据当前客户行为而调整策略变得越来越常见,比如大促过程中库存管理,运营管理等(即既有中远期策略型,也有短期操作型)。同时公司业务互联网化之后导致同时服务的客户剧增,有些情况人工难以完全处理,这就需要机器 自动决策 。比如欺诈检测和用户审核。总结来看,对数据仓库的需求可以抽象成两方面: 实时产生结果、处理和保存大量异构数据。本课程基于真实热门的互联网电商业务场景为案例讲解,结合分层理论和实战对数仓设计进行详尽的讲解,基于Flink+DorisDB实现真正的实时数仓,数据来及分析,实时报表应用。具体数仓报表应用指标包括:实时大屏分析、流量分析、订单分析、商品分析、商家分析等,数据涵盖全端(PC、移动、小程序)应用,与互联网企业大数据技术同步,让大家能够学到大数据企业级实时数据仓库的实战经验。本课程包含的技术: 开发工具为:IDEA、WebStorm Flink 1.11.3Hadoop 2.7.5Hive 2.2.0ZookeeperKafka 2.1.0、Spring boot 2.0.8.RELEASESpring Cloud Finchley.SR2Flume 、Hbase 2.2.6DorisDB 0.13.9、RedisVUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav等课程亮点: 1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink最新版4.真正的实时数仓以及分层设计5.海量数据大屏实时报表6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.数据库实时同步解决方案9.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav10.集成SpringCloud实现统一整合方案11.互联网大数据企业热门技术栈12.支持海量数据的实时数仓报表分析13.支持全端实时实时数仓报表分析14.全程代码实操,提供全部代码和资料 15.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 
上层应用业务对实时数据的需求,主要包含两部分内容:1、 整体数据的实时分析。2、 AB实验效果的实时监控。这几部分数据需求,都需要进行的下钻分析支持,我们希望能够建立统一的实时OLAP数据仓库,并提供一套安全、可靠的、灵活的实时数据服务。目前每日新增的曝光日志达到几亿条记录,再细拆到AB实验更细维度时,数据量则多达上百亿记录,多维数据组合下的聚合查询要求秒级响应时间,这样的数据量也给团队带来了不小的挑战。OLAP层的技术选型,需要满足以下几点:1:数据延迟在分钟级,查询响应时间在秒级2:标准SQL交互引擎,降低使用成本3:支持join操作,方便维度增加属性信息4:流量数据可以近似去重,但订单行要精准去重5:高吞吐,每分钟数据量在千W级记录,每天数百亿条新增记录6:前端业务较多,查询并发度不能太低通过对比开源的几款实时OLAP引擎,可以发现Doris和ClickHouse能够满足上面的需求,但是ClickHouse的并发度太低是个潜在的风险,而且ClickHouse的数据导入没有事务支持,无法实现exactly once语义,对标准SQL的支持也是有限的。所以针对以上需求Doris完全能解决我们的问题,DorisDB是一个性能非常高的分布式、面向交互式查询的分布式数据库,非常的强大,随着互联网发展,数据量会越来越大,实时查询需求也会要求越来越高,DorisDB人才需求也会越来越大,越早掌握DorisDB,以后就会有更大的机遇。本课程基于真实热门的互联网电商业务场景为案例讲解,具体分析指标包含:AB版本分析,下砖分析,营销分析,订单分析,终端分析等,能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。整个课程,会带大家实践一个完整系统,大家可以根据自己的公司业务修改,既可以用到项目中去,价值是非常高的。本课程包含的技术:开发工具为:IDEA、WebStormFlink1.9.0DorisDBHadoop2.7.5Hbase2.2.6Kafka2.1.0Hive2.2.0HDFS、MapReduceFlume、ZookeeperBinlog、Canal、MySQLSpringBoot2.0.8.RELEASESpringCloud Finchley.SR2Vue.js、Nodejs、Highcharts、ElementUILinux Shell编程等课程亮点:1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink4.支持ABtest版本实时监控分析5.支持下砖分析6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.天级别与小时级别多时间方位分析9.数据库实时同步解决方案10.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI11.集成SpringCloud实现统一整合方案12.互联网大数据企业热门技术栈13.支持海量数据的实时分析14.支持全端实时数据分析15.全程代码实操,提供全部代码和资料16.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 
为了实现Python爬虫京东数据可视化,我们需要进行以下步骤: 1.使用Python爬虫爬取京东商品评论数据,并进行数据预处理操作,例如去除HTML标签、去除停用词等。 2.使用Python文本情感分析库对评论数据进行情感分析,得到每条评论的情感得分。 3.将情感得分与评论内容一起存储到CSV文件中。 4.使用Python数据可视化库,例如matplotlib或seaborn,对评论数据进行可视化分析,例如绘制情感得分的直方图、饼图等。 以下是一个简单的Python爬虫京东数据可视化的例子: ```python import requests from bs4 import BeautifulSoup import jieba import jieba.analyse import pandas as pd from snownlp import SnowNLP import matplotlib.pyplot as plt # 爬取京东商品评论数据 def get_comments(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') comments = soup.find_all('div', class_='comment-item') return comments # 数据预处理 def clean_comments(comments): cleaned_comments = [] for comment in comments: cleaned_comment = '' for string in comment.stripped_strings: cleaned_comment += string cleaned_comments.append(cleaned_comment) return cleaned_comments # 情感分析 def sentiment_analysis(comments): sentiments = [] for comment in comments: s = SnowNLP(comment) sentiments.append(s.sentiments) return sentiments # 保存数据到CSV文件 def save_to_csv(comments, sentiments): data = {'comment': comments, 'sentiment': sentiments} df = pd.DataFrame(data) df.to_csv('comments.csv', index=False) # 可视化分析 def visualize_sentiments(sentiments): plt.hist(sentiments, bins=20) plt.xlabel('Sentiment Score') plt.ylabel('Number of Comments') plt.title('Sentiment Analysis of JD Comments') plt.show() # 主函数 if __name__ == '__main__': url = 'https://item.jd.com/100008348542.html#comment' comments = get_comments(url) cleaned_comments = clean_comments(comments) sentiments = sentiment_analysis(cleaned_comments) save_to_csv(cleaned_comments, sentiments) visualize_sentiments(sentiments) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值