使用 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 - 聚类的向量

Mahout 聚类:使用 seqdumper 检索命名向量的名称时出错

大数据-10-Spark入门之支持向量机SVM分类器

准备Mahout所用的向量ApplesToVectors

Mahout 0.13.0 spark-shell 示例因“java.library.path 中没有 jniViennaCL”而失败

将 Mahout 模型输出导出为 Weka 输入