saveAsTextFile
需要編解碼器類使用的附加的可選參數的方法。因此,對於你的例子應該是這樣的,以用gzip:
someMap.saveAsTextFile("hdfs://HOST:PORT/out", classOf[GzipCodec])
UPDATE
由於您使用的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")
如果你得到它的工作,發佈您的配置可能會對別人也有幫助。
與火花的版本工作的呢?我使用的火花0.7。 2,我在編譯時得到一個錯誤:'錯誤:saveAsTextFile方法的參數太多了。我看到這是[討論](https://github.com/mesos/spark/pull/645)。 – ptikobj
我看到它是最新的spark-0.8.0。將不得不按照它看起來,因爲這是一個相當重要的功能。 – ptikobj
啊,這很有道理。我一直在使用主分支,而不是0.7.2。 – Noah