Откуда берутся все эти строки при создании распределенной матрицы в Spark? - PullRequest
0 голосов
/ 11 сентября 2018

Учитывая Spark DataFrame со столбцом идентификаторов и столбцом нормализованных векторов объектов:

df.select("id", "norm")
res247: org.apache.spark.sql.DataFrame = [id: double, norm: vector]

df.count()
res150: Long = 3445

Я хочу преобразовать векторы объектов в распределенную матрицу.Я буду использовать столбец id и векторы для генерации IndexedRowMatrix

def transfunc(r: Row) = {new IndexedRow(r.getAs[Double](0).toLong,
                                        r.getAs[SparseVector](1))
}
val irm = new IndexedRowMatrix(tfidf_df.select("id", "norm").rdd.map(transfunc))

transfunc: (r: org.apache.spark.sql.Row)org.apache.spark.mllib.linalg.distributed.IndexedRow
irm: org.apache.spark.mllib.linalg.distributed.IndexedRowMatrix = org.apache.spark.mllib.linalg.distributed.IndexedRowMatrix@51cdf498

Распределенная матрица irm должна иметь 3445 строк, поскольку в исходном кадре данных было столько строк.Но

irm.numRows()
irm.numCols()

res248: Long = 205853916197
res249: Long = 262144

Количество столбцов правильное, но количество строк .... большое.Откуда взялись все эти дополнительные строки?

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