首页 > 解决方案 > 在数据帧的所有行上应用 LSH approxNearestNeighbors

问题描述

我正在尝试在数据框的model.approxNearestNeighbors(df, key, n)所有行上应用 BucketedRandomProjectionLSH 的函数,以便为每个项目找到前 n 个最相似的项目。我的数据框有 100 万行。

我的问题是我必须找到一种方法在合理的时间内(不超过 2 小时)计算它。我已经阅读了有关该函数的信息,approxSimilarityJoin(df, df, threshold)但是该函数花费的时间太长并且没有返回正确的行数:如果我的数据框有 100.000 行,并且我设置了一个非常高/允许的阈值,我得到的结果甚至不是 10%返回的行数。

所以,我正在考虑approxNearestNeighbors在所有行上使用,以便计算时间几乎是线性的。

您如何将该功能应用于数据框的每一行?我不能使用 UDF,因为我需要模型 + 数据框作为输入。

你有什么建议吗 ?

标签: pythonapache-sparkpysparklsh

解决方案


推荐阅读