web-dev-qa-db-fra.com

Obtenir la valeur d’une colonne DataFrame dans Spark

J'essaie de récupérer la valeur d'une colonne DataFrame et de la stocker dans une variable. J'ai essayé ceci:

val name=df.select("name")
 val name1=name.collect()

Mais aucun des éléments ci-dessus ne renvoie la valeur de la colonne "nom".

Version Spark: 2.2.0 Scala version: 2.11.11

10
Ayan Biswas

Il y a deux ou trois choses ici. Si vous voulez voir toutes les données collectées est la voie à suivre. Cependant, si vos données sont trop volumineuses, le lecteur échouera.

L’autre solution consiste donc à vérifier quelques éléments du cadre de données. Ce que je fais généralement c'est

df.limit(10).select("name").as[String].collect()

Cela fournira une sortie de 10 éléments. Mais maintenant, la sortie ne semble pas bonne

Donc, 2ème alternative est

df.select("name").show(10)

Cela affichera les 10 premiers éléments. Parfois, si les valeurs de colonne sont grandes, il met généralement "..." à la place de la valeur réelle, ce qui est gênant.

Il y a donc une troisième option

df.select("name").take(10).foreach(println)

Prend 10 éléments et les imprimer.

Maintenant, dans tous les cas, vous ne recevrez pas un échantillon correct des données, car les 10 premières données seront sélectionnées. Donc, pour vraiment ramasser de manière aléatoire à partir de la trame de données, vous pouvez utiliser

df.select("name").sample(.2, true).show(10)
or
df.select("name").sample(.2, true).take(10).foreach(println)

Vous pouvez vérifier la fonction "exemple" sur la structure de données

12

Le premier va faire :)

val name = df.select("name") retournera un autre DataFrame. Vous pouvez faire par exemple name.show() pour afficher le contenu du DataFrame. Vous pouvez également collecter ou collectAsMap pour matérialiser les résultats sur le pilote, mais sachez que la quantité de données ne doit pas être trop importante pour le pilote.

Vous pouvez aussi faire:

val names = df.select("name").as[String].collect()

Cela retournera un tableau de noms dans ce DataFrame

4
T. Gawęda