Maison > base de données > tutoriel mysql > Comment puis-je conserver d'autres colonnes lors d'un regroupement dans un Spark DataFrame ?

Comment puis-je conserver d'autres colonnes lors d'un regroupement dans un Spark DataFrame ?

Barbara Streisand
Libérer: 2024-12-21 01:01:09
original
511 Les gens l'ont consulté

How Can I Keep Other Columns When Grouping in a Spark DataFrame?

Préserver les autres colonnes lors du regroupement dans Spark DataFrame

Lors de l'exécution d'une opération de regroupement DataFrame, il est courant de rencontrer le problème de ne recevoir que les éléments groupés colonnes et les valeurs agrégées. Cela peut être gênant si vous devez conserver d'autres colonnes du DataFrame d'origine.

Par exemple, considérez le groupby suivant :

df.groupBy(df("age")).agg(Map("id" -> "count"))
Copier après la connexion

Cela renverra un DataFrame contenant uniquement "l'âge" et les colonnes "count(id)". Cependant, si « nom » et d'autres colonnes existent dans le DataFrame d'origine, vous souhaiterez peut-être les inclure dans le résultat.

En SQL standard, cela peut être réalisé en utilisant la requête suivante :

select name, age, count(id) from df group by age
Copier après la connexion

Pour reproduire ce comportement dans Spark, vous pouvez joindre les résultats agrégés au tableau d'origine. La ou les colonnes clés pour la jointure doivent être les mêmes que la ou les colonnes groupby.

Voici un exemple utilisant Spark SQL :

val groupedDf = df.groupBy($"age").agg(count($"id").as("count"))
val joinedDf = df.join(groupedDf, Seq("age"), "left")
Copier après la connexion

Le joinDf contiendra désormais tous les colonnes d'origine ainsi que la colonne "compte" agrégée.

Une autre approche consiste à utiliser des agrégats arbitraires comme le premier ou le dernier pour inclure des colonnes supplémentaires. Par exemple :

val groupedDf = df.groupBy($"age").agg(first($"name").as("name"), count($"id").as("count"))
Copier après la connexion

Cela garantira que la colonne « nom » est préservée dans le DataFrame agrégé.

Bien que ces méthodes vous permettent de récupérer d'autres colonnes lors du regroupement, il est important de noter que ces requêtes ne sont généralement pas bien définies et peuvent présenter un comportement variable selon les différents systèmes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal