Apache spark svd性能Pypark vs scipy
使用pyspark计算SVD:Apache spark svd性能Pypark vs scipy,apache-spark,machine-learning,scipy,svd,Apache Spark,Machine Learning,Scipy,Svd,使用pyspark计算SVD: rdd = MLUtils.convertVectorColumnsFromML(df.select("ID", "TF_IDF")).rdd index_mat = IndexedRowMatrix(rdd) print('index_mat rows = {}'.format(index_mat.numRows())) print('index_mat columns = {}'.format(index_mat.nu
rdd = MLUtils.convertVectorColumnsFromML(df.select("ID", "TF_IDF")).rdd
index_mat = IndexedRowMatrix(rdd)
print('index_mat rows = {}'.format(index_mat.numRows()))
print('index_mat columns = {}'.format(index_mat.numCols()))
svd = index_mat.computeSVD(k=100, computeU=True)
输出:
索引材料行数=2000
索引表列=6000
sparkdf
有100个分区,我用20个执行器运行这个作业
需要一个多小时。而使用scipy的类似代码将在1分钟内运行。
from scipy.sparse.linalg import svds
u, s, vt = svds(tfidf_sparse, k=100)
对于小型数据集,像spark这样的分布式系统有一个缺点。当您想要处理的数据不适合单个计算机的内存时,它们开始变得有用 以下是spark比scipy慢的其他潜在原因的不完整列表:
如果您需要更多详细信息,请提供一个可复制的示例,包括数据和有关数据集大小的更多信息(观察次数和大小,以GB为单位)。我认为svd在spark ml中不可用api@devツ 不是。但是我试图给出一个总体想法,除了我上面提到的,基于RDD的API比基于数据帧的API慢。