Поиск наименьшего значения в строке Dataframe в Spark

Я пытаюсь найти наименьшее значение из [строки] в DataFrame. Как я могу это сделать? Мой набор данных выглядит примерно так:

aaaa |-32566.335700000003|         27668.7725|         20183.4786|
bbbb | -3.924099999999997|  5.802000000000006|  4.988000000000004|
cccc |  951546.8948000005| -686025.1569999934| -62493.96830000022|
xxxx |-26563.328700000005| 52490.610100000005|          -5555.277|

Исследование: то, что я пытаюсь сделать, это перенести вышеизложенное, а затем выполнить сортировку и выбрать указанные выше строки в виде столбцов. Пожалуйста, предложите любой альтернативный способ, либо используя уже существующие функции набора данных Spark.

Выше приведен пример набора данных, фактическое количество столбцов намного больше, чем это, чтобы получить наименьшее значение в строке.


person Inder    schedule 28.04.2017    source источник


Ответы (1)


Вы можете сделать это, получив все числовые столбцы в строке в виде списка, а затем найдя минимальное значение в этом списке:

val df = sc.parallelize(Seq(("a",1.0,2.0,3.0),("b",-1.0,-2.0,-3.0),("c",-1.0,0.0,1.0))).toDF("id","v1","v2","v3")
df.show

val numericCols = List("v1", "v2", "v3") // you can get these from the df.schema if you need generic approach

val dfMin = df.map(r => (r.getAs[String]("id"), numericCols.map(column => r.getAs[Double](column)).min)).toDF("id", "minValue")
dfMin.show
person Ben Horsburgh    schedule 28.04.2017