使用 Mahout 向量训练 Spark k-means
Posted
技术标签:
【中文标题】使用 Mahout 向量训练 Spark k-means【英文标题】:Train Spark k-means with Mahout vectors 【发布时间】:2015-04-07 15:45:48 【问题描述】:我的 hdfs 中有一些序列文件格式的 Mahout 向量。是否可以以某种方式使用相同的向量在 Spark 中训练 KMeans 模型?我可以将现有的 Mahout 向量转换为 Spark 向量 (mllib),但我想避免这种情况。
【问题讨论】:
【参考方案1】:Spark 不直接支持 Mahout 向量。根据您的担忧,您需要将它们转换为 Spark Vectors。
val sc = new SparkContext("local[2]", "MahoutTest")
val sfData = sc.sequenceFile[NullWritable, MVector](dir)
val xformedVectors = sfData.map case (label, vect) =>
import collection.JavaConversions._
(label, Vectors.dense(vect.all.iterator.map e => e.get.toArray))
【讨论】:
这真的还不错。 DRM 上的单个分布式传递速度很快。使用 Spark-Mahout 代码时,也不需要序列文件。以上是关于使用 Mahout 向量训练 Spark k-means的主要内容,如果未能解决你的问题,请参考以下文章
Mahout 聚类:使用 seqdumper 检索命名向量的名称时出错
Mahout 0.13.0 spark-shell 示例因“java.library.path 中没有 jniViennaCL”而失败