2016-07-26 24 views
1

Ich führe einen groupBy() auf einem Datensatz mit mehreren Millionen von Datensätzen und möchte die resultierende Ausgabe (ein pyspark GroupedData Objekt) speichern, so dass ich es später deserialisieren kann und von diesem Punkt (aggregations obendrauf als erforderlich).Wie serialisiert man das pysparkgroupedData-Objekt?

df.groupBy("geo_city") 
<pyspark.sql.group.GroupedData at 0x10503c5d0> 

Ich mag das GroupedData Objekt in Datenrahmen oder RDDs, um die Umwandlung zu vermeiden, in einer Textdatei oder Parkett/Avro-Format zu speichern (wie die Umwandlungsoperation teuer ist). Gibt es eine andere effiziente Möglichkeit, das Objekt GroupedData in ein Binärformat für schnelleres Lesen/Schreiben zu speichern? Möglicherweise ein Äquivalent von Pickle in Spark?

Antwort

2

Es gibt keine, weil GroupedData ist nicht wirklich eine Sache. Es führt überhaupt keine Datenoperationen durch. Es beschreibt nur, wie die tatsächliche Aggregation fortgesetzt werden soll, wenn Sie eine Aktion für die Ergebnisse einer nachfolgenden agg ausführen.

Sie könnten das unterlagerte JVM-Objekt wahrscheinlich serialisieren und später wiederherstellen, aber es ist Zeitverschwendung. Da groupBy nur beschreibt, was zu tun ist, sollten die Kosten für die Wiederherstellung GroupedData Objekt von Grund auf vernachlässigbar sein.