【问题标题】:scala: method that return varargsscala:返回可变参数的方法
【发布时间】:2018-11-17 12:45:42
【问题描述】:

从 scala 方法中,我想返回一个 Spark 列的变量编号,如下所示:

def getColumns() : (Column*) = {...}

这个想法是然后将它与spark sql一起使用:

myDf.select(getColumns, "anotherColumns"..)

问题是我有大约 30 个请求,它们都有相同的选择子句,我想将它们放在一起。

知道用...替换什么吗?我试过类似的东西:

($"col1", "$col2")

但它不能编译。

【问题讨论】:

  • 返回一个列数组,附加任何你想要的额外条目,然后用:_*扩展它。

标签: scala apache-spark variadic-functions


【解决方案1】:

试试这个:

val df = Seq((1,2,3,4),(5,6,7,8)).toDF("a","b","c","d")

Typecast String 使用 map 函数来激发列,并根据需要在数组中附加附加列。

val lstCols = List("a","b")
df.select(lstCols.map(col) ++ List(col("c"),col("d")): _*).show()   

+---+---+---+---+
|  a|  b|  c|  d|
+---+---+---+---+
|  1|  2|  3|  4|
|  5|  6|  7|  8|
+---+---+---+---+

【讨论】:

  • 我使用 te 以下代码而不是您的代码来使用列而不是字符串: val lstCols = Seq($"a" as "aa", $"b" as "bb") df.select( lstCols ++ Seq($"c", $"d") : _*).show() 。谢谢你的小费。
猜你喜欢
  • 2012-03-21
  • 2015-12-14
  • 2011-09-23
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
相关资源
最近更新 更多