一、如何快速的给大量轨迹点打上区划代码?
1、高德爬取街道中心点,行政区划中心点和边界。
2、精度要求较高的,将边界加载到内存。不高的通过redisgeo根据中心点距离来获取区划。较高的获取到区划后取前N个边界确认。将区划边界对象GeneralPath加载到内存并广播。
3、根据geohash,参考geosh精度 进行reduce聚合,获取geohash对应的区划代码,并广播,然后根据广播中的geohash的区划轨迹点的精度。
二、GeneralPath 序列化造成的bug?
GeneralPath kyro序列化反序列化不一致。
mapWithState,stateRDD 中的对象,再进行MEMORY_AND_DISK_SER 级别的缓存时,序列化反序列化不一致。当可能存在逻辑错误
当通过redis等缓存固化中间结果时,可能存在逻辑错误。
当有这些对象时 通过@transient设置不可序列化
网友评论