【发布时间】:2017-04-11 19:56:38
【问题描述】:
我有一个坐标列表 A(纬度,十进制形式的经度),大约 10.000 点,第二个相同类型的坐标列表 B,大约 100 万点。
我想为列表 B 中的每个元素找到列表 A 中的最近点。
我已经做的是创建两个列表的笛卡尔积并使用haversine公式找到所有组合的距离。
然后我得到列表 A 中的点,这些点与列表 B 中的每个点具有最小距离。
由于组合总数超过100亿,计算距离的时间太长。
有没有办法确保列表 B 中的每个点都匹配列表 A 中的一个点,同时提高性能?
【问题讨论】:
-
我会考虑在问题中添加更多细节。比如预期的最小距离是多少?覆盖面积有多大?球体的哪个部分?
A的大小是否固定(或多或少)?您需要精确的解决方案吗?依此类推……最简单的方法是在较小的列表上构建 kdtree,并使用它来映射 RDD。
标签: algorithm apache-spark geolocation haversine bigdata