Scala Spark DataFrame: dataFrame.sélectionner plusieurs colonnes avec une séquence de noms de colonnes
val columnName=Seq("col1","col2",....."coln");
y a-t-il un moyen de faire le dataframe.sélectionnez opération pour obtenir dataframe contenant seulement les noms de colonne spécifiés .
Je sais que je peux faire dataframe.select("col1","col2"...)
mais l' columnName
est généré à l'exécution.
Je pourrais le faire dataframe.select()
à plusieurs reprises pour chaque nom de colonne dans une boucle.Il aura toute la performance, les frais généraux?. Y a-t-il une autre façon plus simple d'y parvenir?
2 réponses
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)): _*)
Depuis dataFrame.sélectionnez() attendez-vous à la séquence des colonnes comme parmas, donc puisque nous avons séquence de chaîne de caractères, convertissez la séquence de chaîne de caractères à la liste de Col et convertissez cette liste à la séquence de caractères, donc
columnName.carte(nom => col(nom)):_*
donne la séquence de colonne de la séquence de chaîne, et ceci passé comme un paramètre à dataFrame.sélectionnez()
val columnName=Seq("col1","col2");
val DFFiltered = DF.select(columnName.map(name => col(name)):_*)