2

鉴于 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[])

在斯卡拉:

val mat: mat:org.apache.spark.mllib.linalg.DenseMatrix = new DenseMatrix(
  2, 2, Array(1, 2, 3, 4))

org.apache.spark.mllib.linalg.*我假设我对 Java 或 Scale 代码使用完全相同的 jar 。如果我在这里错了,请纠正我。

还有为什么Java版本中有一个方法

org.apache.spark.mllib.linalg.Matrix.toBreeze() 

但不是在Scala 版本中:

org.apache.spark.mllib.linalg.Matrix

这似乎具有讽刺意味的是,Breeze Matrix 是 Scala 特定的,但在 Java 版本中有 API,但在 spark mllib 库的 Scala 版本中没有。

4

1 回答 1

3

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

(请参阅在 Spark MLlib 上使用 Java 中的微风

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

于 2015-11-06T17:37:20.273 回答