Heim > Datenbank > MySQL-Tutorial > Wie kann ich beim Gruppieren in einem Spark-DataFrame andere Spalten beibehalten?

Wie kann ich beim Gruppieren in einem Spark-DataFrame andere Spalten beibehalten?

Barbara Streisand
Freigeben: 2024-12-21 01:01:09
Original
534 Leute haben es durchsucht

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

Andere Spalten beim Gruppieren in Spark DataFrame beibehalten

Beim Durchführen einer DataFrame-Groupby-Operation tritt häufig das Problem auf, dass nur die gruppierten Spalten empfangen werden Spalten und die Aggregatwerte. Dies kann unpraktisch sein, wenn Sie andere Spalten aus dem ursprünglichen DataFrame beibehalten müssen.

Bedenken Sie beispielsweise die folgende Gruppierung:

df.groupBy(df("age")).agg(Map("id" -> "count"))
Nach dem Login kopieren

Dadurch wird ein DataFrame zurückgegeben, der nur das „Alter“ enthält. und „count(id)“-Spalten. Wenn jedoch „name“ und andere Spalten im ursprünglichen DataFrame vorhanden sind, möchten Sie diese möglicherweise in das Ergebnis einbeziehen.

In Standard-SQL kann dies mit der folgenden Abfrage erreicht werden:

select name, age, count(id) from df group by age
Nach dem Login kopieren

Um dieses Verhalten in Spark zu reproduzieren, können Sie die aggregierten Ergebnisse mit der Originaltabelle verknüpfen. Die Schlüsselspalte(n) für den Join sollten mit der/den Groupby-Spalte(n) identisch sein.

Hier ist ein Beispiel mit Spark SQL:

val groupedDf = df.groupBy($"age").agg(count($"id").as("count"))
val joinedDf = df.join(groupedDf, Seq("age"), "left")
Nach dem Login kopieren

Das JoinDf enthält nun alle Originalspalten zusammen mit der aggregierten „Anzahl“-Spalte.

Ein anderer Ansatz besteht darin, beliebige Aggregate wie „erste“ oder „letzte“ zu verwenden, um zusätzliche Spalten einzuschließen. Zum Beispiel:

val groupedDf = df.groupBy($"age").agg(first($"name").as("name"), count($"id").as("count"))
Nach dem Login kopieren

Dadurch wird sichergestellt, dass die Spalte „Name“ im aggregierten DataFrame erhalten bleibt.

Während Sie mit diesen Methoden andere Spalten während der Gruppierung abrufen können, ist dies wichtig zu beachten dass solche Abfragen im Allgemeinen nicht genau definiert sind und in verschiedenen Systemen ein unterschiedliches Verhalten aufweisen können.

Das obige ist der detaillierte Inhalt vonWie kann ich beim Gruppieren in einem Spark-DataFrame andere Spalten beibehalten?. 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