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)的块矩阵。希望它必须是分布式函数。