Heim > Datenbank > MySQL-Tutorial > Wie behalte ich nicht aggregierte Spalten nach einem Spark DataFrame GroupBy?

Wie behalte ich nicht aggregierte Spalten nach einem Spark DataFrame GroupBy?

Susan Sarandon
Freigeben: 2024-12-31 14:33:11
Original
350 Leute haben es durchsucht

How to Keep Non-Aggregated Columns After a Spark DataFrame GroupBy?

So behalten Sie nicht aggregierte Spalten in Spark DataFrame GroupBy bei

Beim Aggregieren von Daten mit der GroupBy-Methode von DataFrame enthält der resultierende DataFrame nur die Gruppe -by-Schlüssel und die aggregierten Werte. In manchen Fällen kann es jedoch wünschenswert sein, auch nicht aggregierte Spalten aus dem ursprünglichen DataFrame in das Ergebnis einzubeziehen.

Einschränkung von Spark SQL

Spark SQL folgt die Konvention von SQL vor 1999, die keine zusätzlichen Spalten in Aggregationsabfragen zulässt. Aggregationen wie „count“ führen zu Ergebnissen, die nicht genau definiert sind, wenn sie auf mehrere Spalten angewendet werden. Daher zeigen unterschiedliche Systeme, die solche Abfragen verarbeiten, ein unterschiedliches Verhalten.

Lösung:

Um nicht zu erhalten -aggregierte Spalten in einer Spark DataFrame-Gruppe. Es gibt mehrere Optionen:

  1. Original beitreten DataFrame:Verknüpfen Sie den aggregierten DataFrame mit dem ursprünglichen DataFrame, um die fehlenden Spalten hinzuzufügen.
val aggregatedDf = df.groupBy(df("age")).agg(Map("id" -> "count"))
val joinedDf = aggregatedDf.join(df, Seq("age"), "left")
Nach dem Login kopieren
  1. Fensterfunktionen verwenden:Verwenden Sie Fensterfunktionen wie zuerst oder zuletzt, um zusätzliche Spalten in die Aggregationsabfrage einzuschließen. Allerdings kann dieser Ansatz in bestimmten Szenarien rechenintensiv sein.
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"))
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie behalte ich nicht aggregierte Spalten nach einem Spark DataFrame GroupBy?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage