2017-07-10 1 views
0

Ich benutze derzeit spark 2.0 und ich versuche, den Datenrahmen als ein Parkett mit mehreren Partitionen zu schreiben.Wie mehrere Parameter in partitionBy def in Scala übergeben?

Ich versuche, die unten in Spark Shell auszuführen.

var partitionNames = "partition1,partition2" 

var partition = partitionNames.split(",").map(elem => "\""+ elem + "\"").map(elem => elem.mkString) //"partition1","partition2" 

df.write.partitionBy(partition).path("s3://") 

Wenn ich den oben Schreibbefehl auszuführen, gibt es mir eine Fehlermeldung besagt, dass die Partition Spalte existiert nicht in dem Datenrahmen.

Wenn ich die Partitionen hartcodiere, funktioniert es, aber wenn ich als Argument übergeben, tut es nicht.

+0

haben Sie versucht, neu zu partitionieren oder zu verschmelzen? –

Antwort

0

Es gibt zwei Probleme hier: Die erste, dass der Spaltenname enthält "(das ist wahrscheinlich nicht das, was Sie wollen), ist die zweite, dass partitionBy erwartet varargs Strings

In jedem Fall Partition unter der Annahme, die richtigen enthält. Namen in seinen Werten, die Sie tun sollten:

df.write.partitionBy(partition: _*).path("s3://") 
Verwandte Themen