gpt4 book ai didi

scala - BucketedRandomProjectionLSH 的性能 (org.apache.spark.ml.feature.BucketedRandomProjectionLSH)

转载 作者:行者123 更新时间:2023-12-03 10:38:59 25 4
gpt4 key购买 nike

您好,我正在使用 BucketedRandomProjectionLSH(2 个桶 3 个哈希表)算法在约 300,000 条记录的数据集中查找相似的人。我正在为每个记录创建一个稀疏的二元组向量(每个向量中有 1296 个维度),并对数据集进行近似相似性自连接,正如我提到的那样,数据集并不太大。在 3 节点 spark 集群(主节点:m3.xlarge,核心节点:2 m4.4xlarge)上,大约需要 7 个小时才能完成。性能太慢,我正在寻找某人可能为该算法创建的一些基准。此外,有关如何调整此算法的任何指导都将非常有帮助。

这是供您引用的代码片段:

val rdd=sc.loadFromMongoDB(ReadConfig(Map("uri" -> "mongodb://localhost:27017/Single.master","readPreference.name" -> "secondaryPreferred")))
val aggregatedRdd = rdd.withPipeline(Seq(Document.parse("{$unwind:'$sources'}"),Document.parse("{$project:{_id:0,id:'$sources._id',val:{$toLower:{$concat:['$sources.first_name','$sources.middle_name','$sources.last_name',{$substr:['$sources.gender',0,1]},'$sources.dob','$sources.address.street','$sources.address.city','$sources.address.state','$sources.address.zip','$sources.phone','$sources.email']}}}}")))
val fDF=aggregatedRdd.map(line=>line.values()).map(ll=>bigramMap(ll.toArray)).toDF("id","idx","keys")
val columnNames = Seq("idx","keys")
val result = fDF.select(columnNames.head, columnNames.tail: _*)
val brp = new BucketedRandomProjectionLSH().setBucketLength(2).setNumHashTables(3).setInputCol("keys").setOutputCol("values")
val model = brp.fit(result)
var outDD=model.approxSimilarityJoin(result, result, 100).filter("datasetA.idx < datasetB.idx").select(col("datasetA.idx").alias("idA"),col("datasetB.idx").alias("idB"),col("distCol"))

最佳答案

我尝试使用 BucketedRandomProjectionLSH 处理 10,000,000 个数据。需要3个小时。我之前只存储了Dataframe的现金。

df.persist()

关于scala - BucketedRandomProjectionLSH 的性能 (org.apache.spark.ml.feature.BucketedRandomProjectionLSH),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43927844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com