Ich benutze Spark 1.6.0 und Scala.
Ich möchte einen Datenrahmen als komprimiertes CSV-Format speichern.
Hier ist, was ich bisher habe (angenommen, ich habe bereits df
und sc
als SparkContext
):
Die Ausgabe ist nicht in gz
format.
Auf dem Funken-csv github: Ссылка
Man kann lesen:
codec
: Komprimierungscodec zum Speichern in Datei. Dies sollte der vollständig qualifizierte Name einer Klasse sein, die org.apache.hadoop.io.compress.CompressionCodec implementiert, oder eine der Groß- und Kleinschreibung, die die Groß- und Kleinschreibung nicht berücksichtigt (bzip2, gzip, lz4 und snappy). Standardmäßig wird keine Komprimierung verwendet, wenn kein Codec angegeben ist.
In Ihrem Fall sollte das funktionieren:
df.write.format("com.databricks.spark.csv").codec("gzip")\
.save('my_directory/my_file.gzip')
Dieser Code funktioniert für Spark 2.1, wo .codec
nicht verfügbar ist.
Für Spark 2.2 können Sie die hier beschriebene Option df.write.csv(...,codec="gzip")
verwenden: Ссылка
Mit Spark 2.0+ ist das etwas einfacher geworden:
%Vor%Sie benötigen das externe Databricks CSV-Paket nicht mehr.
Der Autor% csv()
unterstützt eine Reihe praktischer Optionen. Zum Beispiel:
sep
: Zum Festlegen des Trennzeichens. quote
: Ob und wie Werte angegeben werden. header
: Gibt an, ob eine Kopfzeile eingefügt werden soll. Zusätzlich zu gzip
:
bzip2
lz4
snappy
deflate
Die vollständigen Spark-Dokumente für den csv()
writer finden Sie hier: Python / Scala "
Schreiben Sie die CSV-Datei mit Kopfzeilen und benennen Sie die Datei part-000 in .csv.gzip
um %Vor%Wenn Sie die Kopfzeile nicht benötigen, setzen Sie sie auf false und Sie müssen die Koaleszenz auch nicht durchführen. Es wird auch schneller zu schreiben sein.
Tags und Links scala csv apache-spark spark-dataframe