在 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 中为数据帧中的每个组采样不同数量的随机行