Scala Étincelle DataFrame : dataFrame.sélectionnez plusieurs colonnes étant donné une Séquence de noms de colonne
val columnName=Seq("col1","col2",....."coln");
Est-il un moyen de faire dataframe.sélectionnez l'opération pour obtenir dataframe contenant uniquement les noms de colonne spécifié .
Je sais que je peux faire dataframe.select("col1","col2"...)
mais le columnName
est généré lors de l'exécution.
Je pourrais faire dataframe.select()
à plusieurs reprises pour chaque nom de colonne dans une boucle.Il aura toute la performance, les frais généraux?. Est-il un autre moyen plus simple pour effectuer cette opération?
- en double? stackoverflow.com/questions/34938770/...
- C'est un double de cette question. Voir la chronologie.
Vous devez vous connecter pour publier un commentaire.
tail
renvoie la séquence à l'exclusion du premier élément (head
);: _*
transforme une collection dans un vararg argument utilisé lors de l'appel d'une méthode attend un vararg, comme choisir n':def select(col: String, cols: String*)
select
- c'est soitselect(col: String, cols: String*): DataFrame
pour Cordes, ouselect(cols: Column*): DataFrame
pour les Colonnes, il n'y a passelect(cols: String*): DataFrame
. Voir spark.apache.org/docs/latest/api/scala/...Depuis
dataFrame.select()
s'attend à une séquence de colonnes et nous avons une séquence de chaînes de caractères, nous devons convertir notre séquence à unList
decol
s et convertir la liste de la séquence.columnName.map(name => col(name)): _*
donne une séquence de colonnes à partir d'une séquence de chaînes de caractères, ce qui peut être passé en paramètre àselect()
: