Здесь вы можете сделать foldLeft для создания всех ваших столбцов вручную.
val df = Seq(Array("Hello", "world"), Array("another", "row")).toDS()
Затем вы вычисляете размер вашего массива.
val size_array = df.first.length
Затем вы добавляете столбцы в свой массив.фрейм данных с foldLeft:
0.until(size_array).foldLeft(df){(acc, number) => df.withColumn(s"col$number", $"value".getItem(number))}.show
Здесь наш аккумулятор - это наша df, и мы просто добавляем столбцы один за другим.