Apache Spark - 是否可以在同一个RDD上计算N到N个操作

时间:2015-04-27 13:23:02

标签: python apache-spark

我目前正在使用Spark在Python中开发应用程序。我有一个酒店数据集如下: Id,酒店名称,地址,....,经度,白痴

我想为每家酒店计算附近的前5家酒店。

是否可以在Spark中这样做?我不知道是否可以将RDD与我的数据集并行化,然后使用整个数据集计算每一行。

所以这就是我尝试过的:     test = booking_data.cartesian(booking_data).map(lambda((x1,y1),(x2,y2)):distanceBetweenTwoPoints)

distanceBetweenTwoPoints是我的函数,它计算两个点并取四个参数。

显示的错误是:ValueError:解压缩的值太多

1 个答案:

答案 0 :(得分:0)

我实施了基于网格的搜索算法,以便有效地查找每家酒店周围的顶级酒店,例如here解释了这个想法。源代码可以从我的GitHub gist找到。

该算法基于将酒店分组为"桶和#34; (网格的细胞)并将每个酒店分配到附近的8个桶中。然后通过groupByKey将它们组合在一起,并独立于其余数据进行分析。我没有为它运行很多测试,但输出看起来很合理。我希望这有助于将来参考。