首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Flambo时,在DataFrame中找不到选择方法的匹配方法

使用Flambo时,在DataFrame中找不到选择方法的匹配方法
EN

Stack Overflow用户
提问于 2016-03-16 13:07:27
回答 2查看 742关注 0票数 1

我正在使用弗拉博与Spark一起工作。我想检索一个包含给定列名的DataFrame。我编写了一个简单的函数如下:

代码语言:javascript
复制
(defn make-dataset
  ([data-path column-names and-another]
    (let [data (sql/read-csv sql-context data-path)
      cols (map #(.col data %) column-names)]
      (.select data (Column. "C0")))))

我在执行它时会得到以下异常。

IllegalArgumentException未找到匹配方法:为类org.apache.spark.sql.DataFrame clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:80)选择

我做错什么了?为什么col.可以工作,而select.却不能工作,因为它们都来自同一个类?如果我错了请帮帮我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-16 13:36:59

您试图调用的DataFrame.select具有以下签名:

代码语言:javascript
复制
def select(cols: Column*): DataFrame

正如您所看到的,它接受一个Column的vararg,而您提供了一个单独的、裸露的Column值,它与签名不匹配,因此是异常。Scala的varargs被包装在scala.collection.Seq中。可以使用以下代码将列包装成实现Seq的内容:

代码语言:javascript
复制
(scala.collection.JavaConversions/asScalaBuffer [(Column. "C0")])
票数 4
EN

Stack Overflow用户

发布于 2018-03-14 03:29:17

在Clojure中,使用数组传递给varargs字段。当我使用String和Array of String在dataframe上调用select函数时,同样的问题也得到了解决。

就像这样

(车辆编号"a“、"b”、“c”)

(暗->星火- )

当涉及到集合时,我们会被java api的工作方式愚弄.当方法签名说..。java可以使用一个值,正如Clojure所期望的那样,其中一个值是集合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36036591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档