Beibehalten zusätzlicher Spalten in Spark DataFrame GroupBy-Vorgängen
In Spark DataFrame GroupBy-Abfragen ist es üblich, nur gruppenbezogene Spalten und Aggregate abzurufen . Es kann jedoch Szenarien geben, in denen Sie beabsichtigen, zusätzliche Spalten über den Gruppenschlüssel und die Ergebnisse der Aggregatfunktion hinaus beizubehalten.
Betrachten Sie die folgende GroupBy-Operation:
df.groupBy(df("age")).agg(Map("id" -> "count"))
Diese Abfrage gibt einen DataFrame mit zurück nur zwei Spalten: „Alter“ und „Anzahl(ID)“. Wenn Sie zusätzliche Spalten aus dem ursprünglichen DataFrame benötigen, z. B. „Name“, können Sie mehrere Ansätze verwenden.
Ansatz 1: Aggregierte Ergebnisse mit Originaltabelle verbinden
Einer Methode besteht darin, den DataFrame mit den aggregierten Ergebnissen zu verknüpfen, um die fehlenden Spalten abzurufen. Zum Beispiel:
val agg = df.groupBy(df("age")).agg(Map("id" -> "count")) val result = df.join(agg, df("age") === agg("age"))
Diese Technik behält alle Spalten des ursprünglichen DataFrame bei, kann aber bei großen Datensätzen weniger effizient sein.
Ansatz 2: Aggregieren mit zusätzlichen Funktionen (Erste/Letzte). )
Sie können auch zusätzliche Aggregatfunktionen wie „first“ oder „last“ verwenden, um nicht gruppierte Spalten in die aggregierten Ergebnisse einzubeziehen. Zum Beispiel:
df.groupBy(df("age")).agg(Map("id" -> "count", "name" -> "first"))
Dies gibt einen DataFrame mit drei Spalten zurück: „Alter“, „Anzahl(ID)“ und „Vorname(Name).“
Ansatz 3: Fensterfunktionen-Where-Filter
In manchen Fällen können Sie Fensterfunktionen in Kombination mit einem Where-Filter nutzen, um das gewünschte Ergebnis zu erzielen. Dieser Ansatz kann jedoch Auswirkungen auf die Leistung haben:
df.select( col("name"), col("age"), count("id").over(Window.partitionBy("age").rowsBetween(Window.unboundedPreceding, Window.currentRow)) ).where(col("name").isNotNull)
Durch den Einsatz dieser Techniken können Sie beim Durchführen von GroupBy-Vorgängen in Spark DataFrames effektiv zusätzliche Spalten beibehalten und so verschiedenen analytischen Anforderungen gerecht werden.
Das obige ist der detaillierte Inhalt vonWie behalte ich zusätzliche Spalten in Spark DataFrame GroupBy-Operationen bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!