Scala Spark中对分布式块矩阵的操作

时间:2018-11-16 13:03:55

标签: scala apache-spark

我正在通过控制所形成块的大小,从索引行矩阵中形成分布式块矩阵。

var populationSize   = 1000000
var chromosomeLength = 4
var mutationRate = 0.05
var mutationNumber = 1000000*(mutationRate)

var populationMatrix = new IndexedRowMatrix(
RandomRDDs.uniformVectorRDD(sc, populationSize, chromosomeLength).zipWithIndex.map {case (v, i) => IndexedRow(i, v)}
)

var mutationBlockMatrix = populationMatrix.toBlockMatrix(mutationNumber.toInt,chromosomeLength)

现在,只需以分布式方式选择这些分布式块中的一个随机行,然后将其收集到另一个分布式矩阵中即可

var s = mutationBlockMatrix.colsPerBlock
var r = mutationBlockMatrix.rowsPerBlock
var t = mutationBlockMatrix.numRowBlocks
var w = mutationBlockMatrix.blocks.toDF


s: Int = 4
r: Int = 50000
t: Int = 20
w: org.apache.spark.sql.DataFrame = [_1: struct<_1: int, _2: int>, _2: matrix]

在此示例中-'w'是本示例中尺寸为(4,20)的块矩阵的RDD和RDD,并且有50000这样的矩阵。我的目标是为每个“ w”随机选择20个中的4个行,并创建一个新的分布式块矩阵,该矩阵具有50000个size(4,1)的块矩阵。希望它必须是分布式函数。

0 个答案:

没有答案