2016-10-01 3 views
1

Ich habe Daten auf eine Art partitioniert, ich möchte nur in einer anderen partitionieren. Also im Grunde ist es Gonna so etwas wie diese:DatenFrameWriter partitionBy die Daten mischen?

sqlContext.read().parquet("...").write().partitionBy("...").parquet("...") 

Ich frage mich, ist diese Shuffle auslösen oder alle Daten lokal neu zu partitionieren, da in diesem Zusammenhang eine Partition nur ein Verzeichnis in HDFS und Daten von der Einrichtung Die gleiche Partition muss nicht auf demselben Knoten liegen, um in HDFS in dasselbe Verzeichnis geschrieben zu werden.

Antwort

5

Weder parititionBy noch bucketBy werden die Daten gemischt. Es gibt Fälle, obwohl, wenn die Daten neu zu partitionieren ersten eine gute Idee sein kann:

df.repartition(...).write.partitionBy(...) 

Andernfalls ist die Anzahl der Ausgabedateien durch die Anzahl der Partitionen Mächtigkeit der Partitionierungsspalte * begrenzt wird.

+0

was sollte ich umpartitionieren, um dies zu vermeiden? –

Verwandte Themen