spark scala避免RowMatix计算后的混乱

spark scala避免RowMatix计算后的混乱,scala,join,apache-spark,partitioning,Scala,Join,Apache Spark,Partitioning,scala spark:分布式矩阵运算后如何避免联接中的RDD洗牌 创建密集矩阵作为输入,以计算列之间的余弦距离 val rowMarixIn=sc.textFile(“input.csv”).map{line=> val values=line.split(“”).map(uu.toDouble) 向量。密集(值) } 余弦计算后从坐标矩阵中提取的条目集 val coMarix = new RowMatrix(rowMarixIn) val similerRows = coMatrix.col

scala spark:分布式矩阵运算后如何避免联接中的RDD洗牌

  • 创建密集矩阵作为输入,以计算列之间的余弦距离

    val rowMarixIn=sc.textFile(“input.csv”).map{line=>
    val values=line.split(“”).map(uu.toDouble)
    向量。密集(值)
    }

  • 余弦计算后从坐标矩阵中提取的条目集

    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,行索引(key,Val),rdd2(key,Val2)

    val joinedd=rowIndexes.join(rdd2)

    这将导致洗牌,
    为了避免混乱,您需要遵循哪些最佳实践,或者对更好的方法提出任何建议,我们将不胜感激

    如果您需要加入,您将不得不忍受这种混乱。在正常情况下,您可以通过使用一致的分区器(如
    HashPartitioner
    )来减少shuffle所花费的时间。但是在这里,由于您的第一个RDD正在计算中,您甚至需要重新调整以使用一致的分区器。谢谢,我正试图考虑采用这里讨论的“预分区”将有所帮助,因为我们正在做一个矩阵计算,想看看是否有可能在那之前和之后跟踪分区,有一件事值得怀疑——pdf是从2012年开始的……是的,这就是为什么我想从社区获得一些信息,我在1.6.2 atmI上,我想你应该在Spark用户邮件列表上问这个问题->user@spark.apache.org