scala spark:如何在分布式矩阵运算后避免连接中的RDD混洗
创建了一个密集矩阵作为输入来计算列之间的余弦距离
val rowMarixIn = sc.textFile("input.csv").map{ line =>
val values = line.split(" ").map(_.toDouble)
Vectors.dense(values)
}
余弦计算后从协调矩阵中提取的条目集
val coMarix = new RowMatrix(rowMarixIn)
val similerRows = coMatrix.columnSimilarities()
//extract entires over a specific Threshold
val rowIndices = similerRows.entries.map {case MatrixEntry(row: Long, col: Long, sim: Double) =>
if (sim > someTreshold )){
col,sim
}`
我们有另一个RDD与rdd2(键,Val2)
只想加入两个rdd,rowIndices(key,Val),rdd2(key,Val2)
val joinedRDD = rowIndices.join(rdd2)
这将导致洗牌, 我们非常感谢为了避免随机播放或对更好的方法提出任何建议而遵循的最佳做法