java - Clojure:将 Spark 工厂方法与 Java 互操作结合使用

标签 java clojure apache-spark

我认为这是一个 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/

相关文章:

java - Java中如何同步线程时间

multithreading - 我应该在 Clojure 中使用哪一个?去 block 或线程?

java - 使用 HttpUrlConnection 在没有中间证书的情况下建立 SSL 连接

java - 检查字符串是否包含 Velocity 中的特定子字符串

open-source - 有哪些非常大的函数式语言项目可以免费获得?

java - Spark 数据集 : Reduce, 数据集的 Agg、Group 或 GroupByKey <Tuple2> Java

apache-spark - spark.executor.memoryOverhead 和 spark.memory.offHeap.size 的区别

java - 如何使用 Java 在 Spark SQL 中加入多列以在 DataFrame 中进行过滤

java - 如何处理比较器中的空比较方法参数?

java - 如何在 Clojure 中形成 java.util.Date 调用