时空碰撞系列·终

阅读: 评论:0

时空碰撞系列·终

时空碰撞系列·终

我决定放弃所有花里胡哨的发言,就简单直接的上干货吧

 

①业务场景:

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

2.单机计算,数据量上亿

 

②当前方案:

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

 

③当前痛点:

1.步骤过于繁琐,会重复调用全量数据

2.join的时候是按时空块join的,按块join会导致每个join成功的块中数据量较大,集群版无所谓,单机版计算上亿数据量shuffle会比较吃力

 

④预期目标

1.减小计算量

2.减小shuffle内存

 

⑤优化思路

1.审视数据来源。数据来源于各种固定的采集设备。如果数据来源是卫星或者移动的采集设备,经纬度会存在无法确定个数量,但固定设备的情况下,所有输出的经纬度即为设备本身的经纬度。因此,我们能确定哪些设备之间的距离本身就在我们的要求范围内。

2.抽出核心计算。此前的计算我们都是对经纬度和时间进行全量计算,扩充的时候全字段会浪费很多内存,基于上一步我决定只使用经纬度对应的字段进行一次计算,得到一张虚拟设备关联表,这张表记录的是空间距离信息;再对时间进行全量计算,得到时间距离信息,最终通过时空距离信息join来得到最终的时空碰撞结果

 

⑥优化方案

test:原表,存储需要计算的数据

时间间隔10S

空间间隔100米

①初始数据处理,构建各种需要的字段

with event as (
select
id,
type,
time,
time_part,
lat,
lon,
lat_part,
lon_part,
location
from(selectid,type,time,floor(unix_timestamp(time)/10) as time_part,lat,lon,floor(lat/0.001) as lat_part,floor(lon/0.001) as lon_part,location,row_number() over(partition by id,time,location or

本文发布于:2024-02-04 06:20:17,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170700905653048.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时空   系列
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23