Scala Spark DataFrame: dataFrame.выбрать несколько столбцов с указанием последовательности имен столбцов
val columnName=Seq("col1","col2",....."coln");
Есть ли способ выполнить операцию dataframe.select, чтобы получить dataframe, содержащий только указанные имена столбцов.
Я знаю, что могу сделать dataframe.select("col1","col2"...)
но columnName
генерируется во время выполнения.
Я мог бы сделать dataframe.select()
несколько раз для каждого имени столбца в цикле. Будут ли у него какие-то служебные накладные расходы?. Есть ли еще один простой способ сделать это?
Ответы
Ответ 1
val columnNames = Seq("col1","col2",....."coln")
// using the string column names:
val result = dataframe.select(columnNames.head, columnNames.tail: _*)
// or, equivalently, using Column objects:
val result = dataframe.select(columnNames.map(c => col(c)): _*)
Ответ 2
Так как dataFrame.select() ожидает последовательность столбцов как парм, поэтому, поскольку у нас есть последовательность строк, преобразуйте последовательность строк в список Col и преобразовайте этот список в последовательность так
columnName.map(name => col (name)): _ *
дает последовательность столбцов из последовательности строк, и это передается в качестве параметров в dataFrame.select()
val columnName=Seq("col1","col2");
val DFFiltered = DF.select(columnName.map(name => col(name)):_*)