答案 0 :(得分:0)
这是一种可以正常工作,但速度慢/效率低(创建多个副本)的方法。我使用了齐柏林飞艇上的火花和pyspark解释器(我猜toree也应该可以):
火花:
%spark
import breeze.linalg._
import breeze.numerics._
z.put("matrix", DenseMatrix.eye[Double](4));
z.get("matrix")
然后在python中
%pyspark
import numpy as np
def breeze2numpy(breeze_matrix):
data = list(breeze_matrix.copy().data())
return np.array(data).reshape(breeze_matrix.rows(), breeze_matrix.cols(), order='F')
breeze2numpy(z.z.get("matrix"))
这可行,但是对于大型数据集将是不切实际的(因为通过python列表涉及多个副本)。像使用C ++本征矩阵-> numpy数组那样,最好使用python的缓冲区协议进行零拷贝方法。