2

Given that Groovy has most of the same features as Scala, can we write Groovy program to import Breeze and do scientific computing in Groovy. It is said that Apache Spark is written in Scala and spark provides exactly same library for writing client code in either Java or Scala. For example:

in Groovy ( or Java)

org.apache.spark.mllib.linalg.Matrix mat = 
  new org.apache.spark.mllib.linalg.DenseMatrix(2,2, [1,2,3,4] as double[])

in Scala:

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

I assume I am using exactly same jar for org.apache.spark.mllib.linalg.* for either Java or Scale code. Correct me if I am wrong here.

Also why there is a method in Java version:

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

but not in Scala version:

org.apache.spark.mllib.linalg.Matrix

This seems ironic that Breeze Matrix is Scala specific but has API in Java version but not in Scala version of spark mllib library.

zero323
  • 322,348
  • 103
  • 959
  • 935
ace
  • 11,526
  • 39
  • 113
  • 193

1 Answers1

3

Not really. Breeze makes really heavy use of Scala's implicit resolution mechanism, which doesn't work in Groovy or other JVM languages.

(See Using Breeze from Java on Spark MLlib)

You might consider using MTJ, which has a more java-friendly interface and has (largely) the same linear algebra backend.

dlwh
  • 2,257
  • 11
  • 23