可以从Groovy代码中使用Scala Breeze库吗?

时间:2015-11-06 08:37:05

标签: java scala groovy apache-spark scala-breeze

鉴于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库中没有。

1 个答案:

答案 0 :(得分:3)

不是真的。 Breeze大量使用Scala的隐式解析机制,它在Groovy或其他JVM语言中不起作用。

(见Using Breeze from Java on Spark MLlib

您可以考虑使用MTJ,它具有更友好的java接口,并且(大部分)具有相同的线性代数后端。