Maison >base de données >tutoriel mysql >Comment conserver les colonnes non agrégées après un Spark DataFrame GroupBy ?
Comment conserver les colonnes non agrégées dans Spark DataFrame GroupBy
Lors de l'agrégation de données à l'aide de la méthode groupBy de DataFrame, le DataFrame résultant contient uniquement le groupe -par clé et les valeurs agrégées. Cependant, dans certains cas, il peut être souhaitable d'inclure également des colonnes non agrégées du DataFrame d'origine dans le résultat.
Limitation de Spark SQL
Spark SQL suit la convention du SQL antérieur à 1999, qui n'autorise pas de colonnes supplémentaires dans les requêtes d'agrégation. Les agrégations telles que count produisent des résultats qui ne sont pas bien définis lorsqu'elles sont appliquées à plusieurs colonnes, de sorte que différents systèmes traitant de telles requêtes présentent des comportements variables.
Solution :
Pour préserver non -colonnes agrégées dans un groupe Spark DataFrame, il existe plusieurs options :
val aggregatedDf = df.groupBy(df("age")).agg(Map("id" -> "count")) val joinedDf = aggregatedDf.join(df, Seq("age"), "left")
import org.apache.spark.sql.expressions.Window val windowSpec = Window.partitionBy(df("age")) val aggregatedDf = df.withColumn("name", first(df("name")).over(windowSpec)) .groupBy(df("age")).agg(Map("id" -> "count"))
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!