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

标签 scala apache-spark apache-spark-mllib

您好,我正在使用 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/

相关文章:

amazon-web-services - 如何使用 Hadoop 2.6 启动 Spark EC2 集群

scala - Spark : Input a vector

pyspark - 在 pyspark 中聚合 Kolmogorov Smirnov 测试

scala - 如何计算单个groupBy中的总和和计数?

scala - Scalatra 或 Play 框架的 OAuth2 提供程序

scala - 将不同类型的值作为 Spark/Scala 中的参数传递给单个函数

apache-spark - Spark MLlib 多类逻辑回归中出现“输入验证失败”错误

scala - 如何使用 Apache Livy 设置 Spark 配置属性?

scala - Scala 中的类型细化但不使用细化

apache-spark - Apache Spark 用户推荐?