2016-04-26 199 views
2

我成功讀取S3中存儲的文本文件,並使用Spark數據框以ORC格式將其寫回到S3。 - inputDf.write().orc(outputPath);
我無法做的是轉換爲快速壓縮的ORC格式。我已經試着在設置編解碼器的時候給出選項,但Spark仍然是作爲正常的ORC編寫的。如何使用Spark Dataframes實現使用Snappy壓縮到S3的ORC格式書寫?使用Snappy壓縮以ORC格式寫入Spark數據幀

+0

見https://issues.apache.org/jira/browse/SPARK-13​​543 –

+0

默認(zlib的)可能比斯納皮更好反正:https://community.hortonworks.com/questions/4067 /snappy-vs-zlib-pros-and-cons-for-each-compression.html –

+0

@MarkRajcok謝謝,這意味着我只能在使用Spark 2.0時使用.option壓縮ORC格式。 有沒有其他方法可以建議我可以在哪裏壓縮輸出。我正在使用Spark 1.6的亞馬遜EMR – Karshit

回答

1

對於任何面臨同樣問題的人,在Spark 2.0中, 默認是可能的。 ORC的默認壓縮格式設置爲snappy。

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

真的很想知道如何更改ORC的默認壓縮... – Azuaron