2016-10-26 109 views
3

默認情況下,較新版本的Spark在保存文本文件時使用壓縮。例如:Spark:saveAsTextFile不壓縮

val txt = sc.parallelize(List("Hello", "world", "!")) 
txt.saveAsTextFile("/path/to/output") 

將以.deflate格式創建文件。改變壓縮算法是很容易的,例如爲.gzip

import org.apache.hadoop.io.compress._ 
val txt = sc.parallelize(List("Hello", "world", "!")) 
txt.saveAsTextFile("/path/to/output", classOf[GzipCodec]) 

但是,有沒有辦法保存RDD作爲一個純文本文件,即沒有經過任何壓縮

+0

嘗試將'mapred.output.compress'設置爲'false' – mrsrinivas

回答

3

我可以看到HDFS文本文件沒有任何壓縮與此代碼。

val conf = new SparkConf().setMaster("local").setAppName("App name") 
val sc = new SparkContext(conf); 
sc.hadoopConfiguration.set("mapred.output.compress", "false") 
val txt = sc.parallelize(List("Hello", "world", "!")) 
txt.saveAsTextFile("hdfs/path/to/save/file") 

可以在sc設置所有的Hadoop相關的屬性來hadoopConfiguration

在Spark 1.5.2(scala 2.11)中驗證了這個代碼。

+1

測試本地文件系統而不是HDFS和Scala 2.10,而不是2.11,它的工作原理就像一個魅力!謝謝! – ffriend