2016-04-26 5 views
2

Ich lese erfolgreich eine in S3 gespeicherte Textdatei und schreibe sie in S3 im ORC-Format mit Spark-Datenframes zurück. - inputDf.write().orc(outputPath);
Was ich nicht in der Lage bin zu konvertieren, ist das ORC-Format mit bissiger Komprimierung. Ich habe bereits versucht, während des Schreibens eine Option zu geben, um den Codec schnell zu setzen, aber Spark schreibt immer noch als normaler ORC. Wie erreicht man das Schreiben im ORC-Format mit Snappy-Komprimierung auf S3 mit Spark-Dataframes?Spark-Datenframe im ORC-Format mit Snappy-Komprimierung schreiben

+0

Siehe https://issues.apache.org/jira/browse/SPARK-13543 –

+0

Der Standard (zlib) könnte als Snappy sowieso besser sein: https://community.hortonworks.com/questions/4067 /snappy-vs-zlib-pros-and-cons-for-e-each-compression.html –

+0

@MarkRajcok Danke, das bedeutet, ich kann ORC-Format mit. Option nur komprimieren, wenn ich Spark 2.0 verwende. Gibt es eine andere Möglichkeit, wo Sie die Ausgabe komprimieren können? Ich bin auf Amazon EMR mit Spark 1.6 – Karshit

Antwort

1

Für alle, die das gleiche Problem haben, in Spark 2.0 ist dies standardmäßig möglich. Das Standardkomprimierungsformat für ORC ist auf "Snappy" eingestellt.

public class ConvertToOrc { 
    public static void main(String[] args) { 
     SparkSession spark = SparkSession 
       .builder() 
       .appName("OrcConvert") 
       .getOrCreate(); 
     String inputPath = args[0]; 
     String outputPath = args[1]; 

     Dataset<Row> inputDf = spark.read().option("sep", "\001").option("quote", "'").csv(inputPath); 
     inputDf.write().format("orc").save(outputPath); 

    } 
} 
+1

Wirklich gerne, wie man die Standardkomprimierung für ORC _change_ ... – Azuaron