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' columnNameest 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?

18
demandé sur Himaprasoon 2016-03-21 15:59:45

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)): _*)
35
répondu Tzach Zohar 2016-03-21 13:03:49

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)):_*)
0
répondu UserszrKs 2018-05-15 17:56:25