默认情况下,较新版本的Spark在保存文本文件时使用压缩。例如:
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 :(得分:8)
我可以使用此代码在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")
您可以在hadoopConfiguration
上将所有与Hadoop相关的属性设置为sc
。
在Spark 1.5.2(scala 2.11)中验证了此代码。