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: _*))
所以我的问题是:
为什么varargs函数countDistinct首先接收单个字符串/列?这种声明的优点和缺点是什么?
如果我想传递变量参数,如何调整此声明?
声明为什么单个字符串/列作为第一个参数的答案是 countDistinct 需要至少一个参数。如果使用了诸如countDistinct(columnNames: String*)使用的声明,则允许零参数。
至于如何传递参数列表,只需写:
df.agg(countDistinct(id1sArr.head, id1sArr.tail: _*))
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。