Ich benutze PySpark, um einen klassischen ETL-Job zu machen (Datensatz laden, verarbeiten, speichern) und möchte meinen Dataframe als Dateien / Verzeichnis speichern, das durch eine "virtuelle" Spalte partitioniert ist; Was ich mit "virtual" meine, ist, dass ich eine Spalte Timestamp habe, die eine Zeichenfolge ist, die ein ISO 8601-kodiertes Datum enthält, und ich möchte nach Jahr / Monat / Tag partitionieren; aber ich habe tatsächlich keine Jahr-, Monats- oder Tagesspalte im DataFrame; Ich habe diesen Timestamp, von dem ich diese Spalten zwar ableiten kann, aber ich möchte nicht, dass meine Ergebniselemente eine dieser Spalten serialisiert haben.
Die Dateistruktur, die sich aus dem Speichern des Datenrahmens auf der Festplatte ergibt, sollte wie folgt aussehen:
%Vor%Gibt es eine Möglichkeit, mit Spark / Pyspark zu tun, was ich will?
Spalten, die für die Partitionierung verwendet werden, sind nicht in den serialisierten Daten selbst enthalten. Zum Beispiel, wenn Sie DataFrame
wie folgt erstellen:
und schreibe es wie folgt:
%Vor%einzelne Dateien enthalten keine Partitionsspalten:
%Vor%Partitionierungsdaten werden nur in einer Verzeichnisstruktur gespeichert und in serialisierten Dateien nicht dupliziert. Es wird nur angehängt, wenn Sie den vollständigen oder teilweisen Verzeichnisbaum lesen:
%Vor%Tags und Links apache-spark pyspark spark-dataframe apache-spark-sql