Рядные скопления в Скале - PullRequest
       8

Рядные скопления в Скале

0 голосов
/ 27 апреля 2018

Я ищу способ получить новый столбец во фрейме данных в Scala, который вычисляет min / max значений в col1, col2, ..., col10 для каждый ряд.

Я знаю, что могу сделать это с помощью UDF, но, возможно, есть более простой способ.

Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2018

Портирование этот ответ Python от user6910411

import org.apache.spark.sql.functions._

val df = Seq(
  (1, 3, 0, 9, "a", "b", "c")
).toDF("col1", "col2", "col3", "col4", "col5", "col6", "Col7")

val cols =  Seq("col1", "col2", "col3", "col4")

val rowMax = greatest(
  cols map col: _*
).alias("max")

val rowMin = least(
  cols map col: _*
).alias("min")

df.select($"*", rowMin, rowMax).show

// +----+----+----+----+----+----+----+---+---+
// |col1|col2|col3|col4|col5|col6|Col7|min|max|
// +----+----+----+----+----+----+----+---+---+
// |   1|   3|   0|   9|   a|   b|   c|0.0|9.0|
// +----+----+----+----+----+----+----+---+---+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...