我认为这是一个 Java 互操作问题,但也许这是 Spark 的细微差别(或者未能从 Scala 导入某些内容?)。我正在尝试按照示例 here 进行操作.它包括以下代码:
import org.apache.spark.mllib.linalg.Vector;
import org.apache.spark.mllib.linalg.Vectors;
Vector dv = Vectors.dense(1.0, 0.0, 3.0);
我的第一个想法是:
(import '[org.apache.spark.mllib.linalg Vector Vectors])
(Vectors/dense 1.0 0.0 3.0)
但是我得到:
CompilerException java.lang.IllegalArgumentException: No matching method: dense, compiling:(/tmp/form-init6598386874684927469.clj:1:1)
我试过:
(.dense (Vectors. 1.0 0.0 3.0))
得到:
CompilerException java.lang.IllegalArgumentException: No matching ctor found for class org.apache.spark.mllib.linalg.Vectors, compiling:(/tmp/form-init6598386874684927469.clj:1:9)
我已经尝试了各种额外的组合( vector 、Java 数组、..
宏等),但无法使其正常工作。特别是,即使文档显示了一个不带参数的构造函数(参见 here),(Vectors.)
似乎都不起作用(a No匹配构造函数
) 错误。谢谢。
最佳答案
您是否尝试过(Vectors/dense (double-array [1.0 0.0 3.0]))
?我自己没有对此进行测试,但它应该与 Vectors 中的 Vector dense (double[] values)
方法匹配。 .
关于java - Clojure:将 Spark 工厂方法与 Java 互操作结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060174/