该方法saveAsTextFile
需要使用编解码器类的附加可选参数。因此,对于您的示例,使用 gzip 应该是这样的:
someMap.saveAsTextFile("hdfs://HOST:PORT/out", classOf[GzipCodec])
更新
由于您使用的是 0.7.2,因此您可以通过在启动时设置的配置选项来移植压缩代码。我不确定这是否会完全有效,但你需要从这个开始:
conf.setCompressMapOutput(true)
conf.set("mapred.output.compress", "true")
conf.setMapOutputCompressorClass(c)
conf.set("mapred.output.compression.codec", c.getCanonicalName)
conf.set("mapred.output.compression.type", CompressionType.BLOCK.toString)
像这样:
System.setProperty("spark.hadoop.mapred.output.compress", "true")
System.setProperty("spark.hadoop.mapred.output.compression.codec", "true")
System.setProperty("spark.hadoop.mapred.output.compression.codec", "org.apache.hadoop.io.compress.GzipCodec")
System.setProperty("spark.hadoop.mapred.output.compression.type", "BLOCK")
如果你让它工作,发布你的配置可能也会对其他人有所帮助。