在 Spark 中使用 LSH 对数据帧中的每个点运行最近邻查询

Posted

技术标签:

【中文标题】在 Spark 中使用 LSH 对数据帧中的每个点运行最近邻查询【英文标题】:Using LSH in spark to run nearest neighbors query on every point in dataframe 【发布时间】:2017-09-08 15:03:24 【问题描述】:

对于数据帧中的每个特征向量,我需要 k 个最近邻。我正在使用来自 pyspark 的 BucketedRandomProjectionLSHModel。

创建模型的代码

brp = BucketedRandomProjectionLSH(inputCol="features", outputCol="hashes",seed=12345, bucketLength=n)

model = brp.fit(data_df)
df_lsh = model.transform(data_df)

现在,我如何为 data_df 中的每个点运行近似最近邻查询。

我已尝试广播模型,但出现了 pickle 错误。 此外,定义一个 udf 来访问模型会产生错误 Method __getstate__([]) does not exist

【问题讨论】:

【参考方案1】:

使用应该使用.approxSimilarityJoin

model.df_lsh(df_lsh, df_lsh)

【讨论】:

以上是关于在 Spark 中使用 LSH 对数据帧中的每个点运行最近邻查询的主要内容,如果未能解决你的问题,请参考以下文章

在 spark scala 中为数据帧中的每个组采样不同数量的随机行

局部敏感哈希LSH

控制 spark-sql 和数据帧中的字段可空性

Spark:如何重用在数据帧中定义了所有字段的相同数组模式

使用 .NET for Spark 在数据帧中高效地填充数据

为spark scala中的数据框中的每个组采样不同数量的随机行