Я предполагаю, что вы читаете файл где-нибудь из hdfs или из общего конфигурационного файла?Причина этого в том, что в кластере этот код будет выполняться на отдельном узле и т. Д.
В этом случае я хотел бы подойти к следующему фрагменту кода:
import org.apache.spark.sql.functions.col
val lines = Source.fromFile("somefile.name.csv").getLines
val cols = lines.flatMap(_.split(",")).map( col(_)).toArray
val df3 = df2.select(cols :_ *)
По сути, выпросто нужно предоставить массив строк и использовать: _ * нотацию для переменного числа аргументов.