使用pyspark.ml.stat.Summarizer
计算稀疏向量的聚合将返回密集向量结果-有没有办法强制执行稀疏向量操作
(仅仅转换结果不是一个好的解决方案,因为中间结果将浪费大量资源)
要复制的代码:
import pyspark
from pyspark.sql.functions import col
from pyspark.ml.stat import Summarizer
from pyspark.ml.linalg import SparseVector, DenseVector
sc = pyspark.SparkContext.getOrCreate()
sql_context = pyspark.SQLContext(sc)
df = sc.parallelize([ ( SparseVector(100, {1: 1.0}),)]).toDF(['v'])
print(df.head())
print(df.select(Summarizer.mean(col('v'))).head())
输出:
Row(v=SparseVector(100, {1: 1.0}))
Row(mean(v)=DenseVector([0.0, 1.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]))
聚合稀疏向量的另一种实现方式也很重要
目前没有回答
相关问题 更多 >
编程相关推荐