Maison >base de données >tutoriel mysql >Comment puis-je conserver d'autres colonnes lors d'un regroupement dans un 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"))
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
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")
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"))
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!