时空碰撞优化系列·二

本文探讨了业务场景中时空碰撞计算的痛点,针对亿级数据的join操作导致的资源消耗问题,提出了一种优化策略。通过将join拆分为两步,先按经纬度过滤,再进行时间维度的扩充,有效减少了数据量,降低了计算压力。最终的优化方案在Spark.sql中实现,实现了流程拆分,减轻了数据压力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优化源于痛点(┬_┬)

有没有痛点取决于业务场景的需求;有多痛取决于当前方案对业务的契合度

让我们从业务场景①、当前方案②切入,联立①②来推导当前痛点③吧!

话不多说,开始分析

 

①业务场景:

1.需要计算时间和空间都在一定范围内的数据对,数据来源可能有多种类型,人、车、码等

2.计算需要并行进行,每次计算一天的数据量,大约亿级

 

②当前方案:

按照时间、经度、纬度三个维度扩充27倍数据,然后join

 

③当前痛点:

1.27倍太大了,从执行计划上来看,是真的扩了27倍的数据,1亿的基础数据就会变成27亿,吃不消

 

那么问题来了,是否存在什么更合适的方案来解决这些痛点呢?

我想,是有的。

根据痛点③,反推我们的预期目标④;

根据目标④,尝试推导出优化思路⑤;

落地思路⑤,成为最终的优化方案⑥

 

④预期目标

1.拆分join流程,把三个维度拆成2+1,先用in逻辑过滤一部分数据,再扩充一次,再join

 

⑤优化思路

1.拆成9倍和3倍,先算经纬度,后算时间

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值