鉴于Groovy具有与Scala大部分相同的功能,我们是否可以编写Groovy程序来导入Breeze并在Groovy中进行科学计算。据说Apache Spark是用Scala编写的,spark提供了完全相同的库,用于在Java或Scala中编写客户端代码。例如:
Groovy(或Java)中的
org.apache.spark.mllib.linalg.Matrix mat =
new org.apache.spark.mllib.linalg.DenseMatrix(2,2, [1,2,3,4] as double[])
Scala中的:
val mat: mat:org.apache.spark.mllib.linalg.DenseMatrix = new DenseMatrix(
2, 2, Array(1, 2, 3, 4))
我假设我使用与org.apache.spark.mllib.linalg.*
完全相同的jar用于Java或Scale代码。如果我在这里错了,请纠正我。
同样为什么there is a method in Java version:
org.apache.spark.mllib.linalg.Matrix.toBreeze()
但不在Scala version中:
org.apache.spark.mllib.linalg.Matrix
这似乎具有讽刺意味,Breeze Matrix是Scala特有的但是在Java版本中有API但在scala版本的spark mllib库中没有。
答案 0 :(得分:3)
不是真的。 Breeze大量使用Scala的隐式解析机制,它在Groovy或其他JVM语言中不起作用。
(见Using Breeze from Java on Spark MLlib)
您可以考虑使用MTJ,它具有更友好的java接口,并且(大部分)具有相同的线性代数后端。