Эффективно извлечь нулевое значение из набора реляционных данных groupBy - PullRequest
0 голосов
/ 27 января 2020

Моя группа по коду дает мне следующий результат

  var datasets = dataset.select(col(x._1)).repartition(32).groupBy(col(x._1)).count.orderBy($"count".desc)

+------------------------+-----+
|Source                  |count|
+------------------------+-----+
|    Application         | 7167|
|                    null|    2|
|                      No|    1|
|                  Closed|    1|
+------------------------+-----+

Как извлечь число "ноль" из этого кадра данных?

Пока я достиг

var nulls =  datasets.filter(datasets.col(x._1).isNull).select($"count").head()(1).getOrElse(0)

Мне нужно, чтобы это всплыло

Хитрость в том, что иногда результат нулевых значений пуст и код не должен выдавать ошибку

 error: value getOrElse is not a member of Any
         var nulls = datasets.filter(datasets.col(x._1).isNull).head()(1).getOrElse(0)

1 Ответ

1 голос
/ 28 января 2020

Это безопасно, даже если null не появляется:

var nulls = datasets.filter(datasets.col(x._1).isNull).select($"count").as[Long].collect().headOption.map(_.toFloat).getOrElse(0.0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...