PySpark:append/merge PythonRDD 到 PySpark 数据框

PySpark: append/merge PythonRDD to a PySpark dataframe

我正在使用以下代码创建聚类模型,然后将每条记录分类到特定的聚类中:

from pyspark.mllib.clustering import KMeans
from pyspark.mllib.linalg import Vectors

spark_df = sqlContext.createDataFrame(pandas_df)
rdd = spark_df.rdd.map(lambda data: Vectors.dense([float(c) for c in data]))
model = KMeans.train(rdd, 2, maxIterations=10,  initializationMode="random")

result = model.predict(red)

如何将预测结果作为附加列附加回 spark_df?谢谢!

pyspark.mllib.clustering.KMeansModel 是可直接在 PySpark 转换中使用的罕见模型之一,因此您可以简单地 mappredict:

rdd.map(lambda point: (model.predict(point), point))

在不可能的一般情况下 zip 是完成这项工作的正确工具:

rdd.zip(model.predict(rdd))