У меня большой набор данных со значительно большим количеством столбцов (150), я хочу применить функцию (UDF) ко всем столбцам, ожидающим первый столбец, который имеет поле id. Мне удалось применить функцию динамически, но теперь мне нужен окончательный набор данных с идентификатором, поданным обратно на фрейм данных. Задание spark будет работать в кластерном режиме, вот что я попробовал.
val df = sc.parallelize(
Seq(("id1", "B", "c","d"), ("id2", "e", "d","k"),("id3", "e", "m","n"))).toDF("id", "dat1", "dat2","dat3")
df.show
+---+----+----+----+
| id|dat1|dat2|dat3|
+---+----+----+----+
|id1| B| c| d|
|id2| e| d| k|
|id3| e| m| n|
+---+----+----+----+
df.select(df.columns.slice(1,df.columns.size).map(c => upper(col(c)).alias(c)): _*).show
----+----+----+
|dat1|dat2|dat3|
+----+----+----+
| B| C| D|
| E| D| K|
| E| M| N|
+----+----+----+
Ожидаемый результат
-----+----+----+
id|dat1|dat2|dat3|
-+----+----+----+
|id1| B| C| D|
|id2| E| D| K|
|id3| E| M| N|
-+----+----+----+