spark org.apache.spark.sql.functions.countDistinct
的声明是:
def countDistinct(columnName: String, columnNames: String*): Column
def countDistinct(expr: Column, exprs: Column*): Column
该声明接收变量参数,但首先带有单个String / Column。所以我不能写这样的代码:
val id1sArr = id1.split(",").map(col(_))
df.agg(countDistinct(id1sArr: _*))
所以我的问题是:
countDistinct
首先接收单个String / Column?这种声明的优点和缺点是什么?答案 0 :(得分:2)
为什么声明中的第一个参数具有单个字符串/列的答案是:
countDistinct
至少需要一个参数。如果使用诸如countDistinct(columnNames: String*)
之类的声明,则零个参数将被允许。
关于如何传递参数列表,只需编写:
df.agg(countDistinct(id1sArr.head, id1sArr.tail: _*))