我使用mahout数学向量(org.apache.mahout.math.Vector
)
并希望将其转换为数组。
查看documentation我找不到要转换的函数。
转换它的最简单方法是什么(使用scala)?
答案 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中操纵向量和矩阵的新方法,您可能不需要数组。