Clojure:在Java互操作中使用Spark工厂方法
我认为这是一个Java互操作问题,但可能是Spark的细微差别(或者未能从Scala导入某些东西?)。我正试着效仿这个例子。它包括以下代码:Clojure:在Java互操作中使用Spark工厂方法,java,clojure,apache-spark,Java,Clojure,Apache Spark,我认为这是一个Java互操作问题,但可能是Spark的细微差别(或者未能从Scala导入某些东西?)。我正试着效仿这个例子。它包括以下代码: 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.li
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)
我尝试了各种附加组合(向量、Java数组、
。
宏等),但无法使其工作。特别是,即使文档显示了一个不带参数的构造函数(请参阅),但与(Vectors.)类似的任何东西似乎都不起作用(一个无匹配ctor
)错误。谢谢。您是否尝试过(向量/密集(双数组[1.0.0.0 3.0])
?我自己没有测试这个,但它应该与中的向量密集(double[]值)
方法相匹配 成功了—谢谢我没有意识到数组的类型是由其内容之外的任何东西定义的。我没有意识到双数组函数的存在。但是into-array
vsdouble-array
的结果有不同的类型:[D
和[Ljava.lang.double
。