我目前正在使用Spark在Python中开发应用程序。我有一个酒店数据集如下: Id,酒店名称,地址,....,经度,白痴
我想为每家酒店计算附近的前5家酒店。
是否可以在Spark中这样做?我不知道是否可以将RDD与我的数据集并行化,然后使用整个数据集计算每一行。
所以这就是我尝试过的: test = booking_data.cartesian(booking_data).map(lambda((x1,y1),(x2,y2)):distanceBetweenTwoPoints)
distanceBetweenTwoPoints是我的函数,它计算两个点并取四个参数。
显示的错误是:ValueError:解压缩的值太多
答案 0 :(得分:0)
我实施了基于网格的搜索算法,以便有效地查找每家酒店周围的顶级酒店,例如here解释了这个想法。源代码可以从我的GitHub gist找到。
该算法基于将酒店分组为"桶和#34; (网格的细胞)并将每个酒店分配到附近的8个桶中。然后通过groupByKey将它们组合在一起,并独立于其余数据进行分析。我没有为它运行很多测试,但输出看起来很合理。我希望这有助于将来参考。