【发布时间】:2015-10-05 11:33:47
【问题描述】:
我的目标是使用 Spark (1.3.1) MLLib 将 kmeans 聚类算法应用于非常大的数据集。我已经使用 Spark 中的 hiveContext 调用了 HDFS 中的数据,并且最终希望以这种方式将其放回原处 - 以这种格式
|I.D |cluster |
===================
|546 |2 |
|6534 |4 |
|236 |5 |
|875 |2 |
我运行了以下代码,其中“数据”是双精度数据帧,第一列的 ID。
val parsedData = data.rdd.map(s => Vectors.dense(s.getDouble(1),s.getDouble(2))).cache()
val clusters = KMeans.train(parsedData, 3, 20)
这运行成功,我现在被困在如上所述的数据框中将集群映射回它们各自的 ID。我可以将其转换为数据框:
sc.makeRDD(clusters.predict(parsedData).toArray()).toDF()
但这就是我所知道的。 This post 是在正确的轨道上,this post 我想我也在问一个类似的问题。
我怀疑需要labeledPoint 库。任何cmets,答案将不胜感激,干杯。
编辑:刚刚在 Spark 用户列表中找到 this,看起来很有希望
【问题讨论】:
标签: apache-spark k-means