2017-02-17 38 views

ответ

0

Понимать, что DenseMatrix в искры создает локальную, а не распределенную матрицу и помещает все в один узел. Densematrix может быть создан следующим образом

# Constructor : DenseMatrix(numRows, numCols, values) 
from pyspark.mllib.linalg import Matrix, Matrices 
dm2 = Matrices.dense(3, 2, [1, 2, 3, 4, 5, 6]) 

Однако вы должны пройти все строки в один большой список, который побеждает цель использования искры на всех.

В случае, если вы ищете просто делать матричные операции на вашем dataframe и не повесились на формате DenseMatrix, я предлагаю вам использовать RowMatrix конструктор в pyspark.mllib.linalg.distributed

Это очень просто преобразовать РД к densematrix, как показано ниже

from pyspark.mllib.linalg.distributed import RowMatrix 

# Create an RDD of vectors. 
rows = sc.parallelize([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) 

# Create a RowMatrix from an RDD of vectors. 
mat = RowMatrix(rows) 

# Get its size. 
m = mat.numRows() # 4 
n = mat.numCols() # 3 

в случае dataframe вы можете просто передать df.rdd конструктору RowMatrix. Более подробную информацию о различных методах RowMatrix можно найти по следующей ссылке: https://spark.apache.org/docs/latest/api/python/pyspark.mllib.html#pyspark.mllib.linalg.distributed.RowMatrix

 Смежные вопросы

  • Нет связанных вопросов^_^