2016-05-23 13 views
1

Ich versuche, meinen Datenrahmen in s3 wie unten zu speichern:Fehler: überladene Methode Wert Optionen mit Alternativen

myDF.write.format("com.databricks.spark.csv").options(codec="org.apache.hadoop.io.compress.GzipCodec").save("s3n://myPath/myData.csv") 

Dann habe ich Fehler:

<console>:132: error: overloaded method value options with alternatives: 
    (options: java.util.Map[String,String])org.apache.spark.sql.DataFrameWriter <and> 
    (options: scala.collection.Map[String,String])org.apache.spark.sql.DataFrameWriter 
cannot be applied to (codec: String) 

Weiß jemand, was ich verpaßt? Vielen Dank!

Antwort

4

Scala ist nicht Python. Es hat keine Kwargs. Sie haben Map bieten:

myDF.write.format("com.databricks.spark.csv") 
    .options(Map("codec" -> "org.apache.hadoop.io.compress.GzipCodec")) 
    .save("s3n://myPath/myData.csv") 
+0

Statt einer myData.csv Datei zu speichern, ich habe tatsächlich einen myData.csv „Ordner“, wo mehrere csv.gz Dateien unter dem Ordner gespeichert werden. Gibt es eine Möglichkeit, es nur in eine CSV-Datei zu speichern. Vielen Dank! – Edamame

+1

@Edamame Sie können keine einzige Datei haben [ohne zu einer einzelnen Partition zu koaleszieren] (http://stackoverflow.com/a/31675351/1560062) und dies ist im Grunde nutzlos, wenn die Größe der Ausgabe nicht vernachlässigbar ist. – zero323

+0

@ zero323: Danke! Wenn ich zu einer einzelnen Partition konvergiere, wie kann ich sie in einer CSV-Datei speichern? Vielen Dank! – Edamame

Verwandte Themen