Schreiben Spark dataframe als CSV mit Partitionen
Ich versuche zu schreiben dataframe in spark zu einem HDFS-Lage, und ich erwarte, dass wenn ich hinzufüge, die partitionBy
notation Funke partition erstellen
(ähnlich wie beim schreiben in Parkett-format)
Ordner in form von
partition_column_name=partition_value
( ich.e partition_date=2016-05-03
). Dazu habe ich folgenden Befehl ausgeführt :
(df.write
.partitionBy('partition_date')
.mode('overwrite')
.format("com.databricks.spark.csv")
.save('/tmp/af_organic'))
aber partition Ordner wurde nicht erstellt
jede Idee, was könnte ich tun, um für die spark-DF automatisch erstellen diese Ordner?
Dank,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Funke 2.0.0+:
Gebaut-in das csv-format unterstützt die Partitionierung aus der box, so dass Sie sollten in der Lage sein verwenden Sie einfach:
ohne zusätzliche Pakete.
Funke < 2.0.0:
In diesem moment (v1.4.0)
spark-csv
nicht unterstützenpartitionBy
(siehe databricks/Funke-csv#123), aber Sie können anpassen, built-in Quellen zu erreichen, was Sie wollen.Können Sie versuchen, zwei unterschiedliche Ansätze. Vorausgesetzt, Ihre Daten relativ einfach ist (keine komplexe Zeichenfolgen und müssen für Zeichen-escaping) und sieht mehr oder weniger wie diese:
Können Sie manuell vorzubereiten Werte für das schreiben:
schreiben und mit
text
QuelleIn komplexeren Fällen können Sie versuchen, um die ordnungsgemäße Verwendung von CSV-parser Vorverarbeiten Werte in einer ähnlichen Weise, entweder durch Verwendung von UDF-oder mapping über RDD, aber es wird deutlich teurer.
Wenn das CSV-format ist nicht eine harte Anforderung können Sie auch JSON verwenden writer unterstützt
partitionBy
out-of-the-box:sowie partition Entdeckung auf Lesen.