这里是一种可以正常工作,但速度慢/效率低(创建多个副本)的方法。我使用了齐柏林飞艇的火花和pyspark解释器(我猜也应该是toree):
火花:
%spark
import breeze.linalg._
import breeze.numerics._
z.put("matrix", DenseMatrix.eye[Double](4));
z.get("matrix")
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS85dXRWNi5wbmcifQ==” width =“ 200” alt =“ scala output”>
然后使用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列表涉及多个副本)。最好使用python的缓冲区协议创建零拷贝方法,就像C ++特征矩阵-> numpy数组一样。