scala - 将mahout向量转换为数组

时间:2014-06-12 14:39:06

标签: java arrays scala vector mahout

我使用mahout数学向量(org.apache.mahout.math.Vector) 并希望将其转换为数组。

查看documentation我找不到要转换的函数。

转换它的最简单方法是什么(使用scala)?

2 个答案:

答案 0 :(得分:1)

你可以使用JavaConverters(我没有mahout,所以代码中可能会有一个小错误):

val javaIterable = mahoutVector.all()
import scala.collection.JavaConverters.iterableAsScalaIterableConverter
val scalaIterable = javaIterable.asScala
val scalaArray = scalaIterable.toArray

scalaArray现在包含Vector.Element对象。如果要获得double值,则必须映射元素(使用.get()):

[same first three lines as above]
val scalaArray = scalaIterable.map(_.get()).toArray

答案 1 :(得分:1)

Mahout的最新主版本拥有功能齐全的Scala API和线性代数DSL。新代码正在Scala中编写,并针对Spark。事实上,Hadoop mapreduce没有新的贡献,只有Spark。

Scala和Spark绑定在此处描述:http://mahout.apache.org/users/sparkbindings/ScalaSparkBindings.pdf

甚至还有一个Scala Shell,您可以在其中交互式地试验许多核心Mahout代码。

考虑到在Scala中操纵向量和矩阵的新方法,您可能不需要数组。