以下代码是从我的Spark K-Means聚类代码中删除的。 我集群在一组固定的属性上,但有时候我只聚集在2个维度上。有时候我很难将结果写回数据库 - mysql。以下代码仅适用于2d。我怎样才能对此进行参数化?
val kmeans = new KMeans().setK(k).setSeed(1L)
val model = kmeans.fit(dataset)
// Evaluate clustering by computing Within Set Sum of Squared Errors.
//val WSSSE = model.computeCost(dataset)
//println(s"Within Set Sum of Squared Errors = $WSSSE")
var clusterCenters:Seq[(Double,Double)] = Seq()
for(e <- model.clusterCenters){
clusterCenters = clusterCenters :+ ((e(0)),e(1))
}
import sc.implicits._
var centroidsDF = clusterCenters.toDF()
答案 0 :(得分:0)
好的,解决方案是创建一个DataFrame,其中包含一个您无法直接保存的列,然后定义一个UDF。然后,您可以在循环中使用.withColumn()来转换DataFrame。然后删除原始列并保存DataFrame。