Alternative Möglichkeiten zum Erhalten zusätzlicher Spalten in Spark DataFrame GroupBy
Beim Ausführen von GroupBy-Vorgängen für einen Spark DataFrame kann das Problem auftreten, dass nur Abrufen der Gruppierungsspalte und des Ergebnisses der Aggregatfunktion, wobei andere Spalten aus dem ursprünglichen DataFrame weggelassen werden.
Zur Adressierung Dazu können Sie zwei Hauptansätze in Betracht ziehen:
Spark SQL hält sich an die Konventionen vor SQL:1999 , was die Einbeziehung zusätzlicher Spalten in Aggregationsabfragen verbietet. Daher können Sie die erforderlichen Daten aggregieren und anschließend wieder mit dem ursprünglichen DataFrame verbinden. Dies kann mit den Methoden „selectExpr“ und „join“ erreicht werden, wie unten gezeigt:
// Aggregate the data val aggDF = df.groupBy(df("age")).agg(Map("id" -> "count")) // Rename the aggregate function's result column for clarity val renamedAggDF = aggDF.withColumnRenamed("count(id)", "id_count") // Join the aggregated results with the original DataFrame val joinedDF = df.join(renamedAggDF, df("age") === renamedAggDF("age"))
Alternativ können Sie dies tun Verwenden Sie Fensterfunktionen, um zusätzliche Spalten zu berechnen und sie im gruppierten DataFrame beizubehalten. Bei dieser Methode geht es in erster Linie darum, einen Fensterrahmen über der Gruppierungsspalte zu definieren und eine Aggregatfunktion anzuwenden, um die gewünschten Daten abzurufen.
// Get the row number within each age group val window = Window.partitionBy(df("age")).orderBy(df("age")) // Use the window function to calculate the cumulative count of ids val dfWithWindow = df.withColumn("id_count", count("id").over(window))
Sobald Sie diese Techniken angewendet haben, können Sie gleichzeitig die erforderlichen zusätzlichen Spalten abrufen Durchführen von GroupBy-Vorgängen auf Ihrem Spark DataFrame.
Das obige ist der detaillierte Inhalt vonWie kann ich nach einem GroupBy-Vorgang zusätzliche Spalten in meinen Spark-DataFrame einschließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!