Почему функция подсчета varargs countDistinct сначала получает одну строку / столбец? - PullRequest
0 голосов
/ 28 ноября 2018

Объявление spark org.apache.spark.sql.functions.countDistinct:

def countDistinct(columnName: String, columnNames: String*): Column
def countDistinct(expr: Column, exprs: Column*): Column

Объявление получает переменные аргументы, но сначала с одной строкой / столбцом.Поэтому я не могу написать такой код:

val id1sArr = id1.split(",").map(col(_))
df.agg(countDistinct(id1sArr: _*))

Итак, мои вопросы:

  1. Почему функция varargs countDistinct сначала получает одну строку / столбец?В чем преимущество и недостаток этого типа объявлений?
  2. Как адаптировать это объявление, если я хочу передать переменные аргументы?

1 Ответ

0 голосов
/ 28 ноября 2018

Ответ на вопрос, почему объявление имеет одну строку / столбец в качестве первого аргумента, заключается в том, что countDistinct требует как минимум один аргумент .Если используется такое объявление, как countDistinct(columnNames: String*), допустимы нулевые аргументы.

Что касается передачи списка аргументов, просто напишите:

df.agg(countDistinct(id1sArr.head, id1sArr.tail: _*))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...