Il metodo saveAsTextFile
prende un parametro opzionale aggiuntiva della classe codec da utilizzare. Così, per il tuo esempio dovrebbe essere qualcosa di simile da usare gzip:
someMap.saveAsTextFile("hdfs://HOST:PORT/out", classOf[GzipCodec])
UPDATE
Dal momento che si sta utilizzando 0.7.2 si potrebbe essere in grado di porta il codice di compressione tramite le opzioni di configurazione che si impostato all'avvio. Non sono sicuro se questo funzionerà esattamente, ma è necessario andare da questo:
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)
a qualcosa di simile:
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")
Se si arriva a farlo funzionare, pubblicare la tua config probabilmente essere utile anche agli altri.
con quale versione di scintilla fa questo lavoro? sto utilizzando scintilla 0.7. 2 e ottengo un errore in compiletime: 'errore: troppi argomenti per metodo saveAsTextFile'. Ho visto che questo era [discusso] (https://github.com/mesos/spark/pull/645) però. – ptikobj
Vedo che è nella più recente scintilla 0.8.0. Dovrà tirarlo come sembra dal momento che questa è una caratteristica piuttosto importante. – ptikobj
ah, questo ha senso. Ho lavorato con il master branch, non 0.7.2. – Noah