Операции над распределенной блочной матрицей в scala spark - PullRequest
0 голосов
/ 16 ноября 2018

Я формирую матрицу распределенных блоков из матрицы индексированных строк, контролируя размер сформированных блоков.

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) в этом примере, и существует 50000 таких матриц.Моя цель состоит в том, чтобы случайным образом выбрать строку из 4 из 20 для каждого 'w' и создать новую распределенную матрицу блоков, имеющую 50000 блочных матриц измерений (4,1).Надеюсь, это должна быть распределенная функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...