我正在尝试实现LSH spark来为每个用户找到包含50000行和每行约5000个特征的非常大的数据集的最近邻居。以下是与此相关的代码。
LEFT JOIN
这项工作停留在approxSimilarityJoin()函数中,永远不会超越它。请让我知道如何解决它。
答案 0 :(得分:3)
如果你留下足够长的时间它会完成,但是你可以采取一些措施加快速度。查看源代码,您可以看到算法
由于数据被洗牌,连接可能是这里的缓慢部分。所以有些事要尝试:
spark.sql.shuffle.partitions
(默认情况下,在加入后为您提供200个分区)spark.sql.functions.broadcast(dataset)
进行地图端连接sparseVectors
一起使用。在这4个选项中,2和3对我来说效果最好,但始终使用sparseVectors
。