Sposób saveAsTextFile
trwa dodatkowy opcjonalny parametr klasy kodeka aby wykorzystać. Tak dla przykładu powinno być coś takiego w użyciu gzip:
someMap.saveAsTextFile("hdfs://HOST:PORT/out", classOf[GzipCodec])
UPDATE
Ponieważ używasz 0.7.2 może być w stanie do portu kod kompresji poprzez opcje konfiguracyjne, które ustawić przy starcie. Nie jestem pewien, czy to będzie działać dokładnie, ale trzeba iść z tego:
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)
do czegoś takiego:
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")
Jeśli zmusić go do pracy, publikując swój config prawdopodobnie być także pomocnym dla innych.
z której wersji iskry to działa? Używam zapłonie 0.7. 2 i otrzymuję błąd w czasie kompilacji: 'error: zbyt wiele argumentów dla metody saveAsTextFile'. Widziałem, że to było [omawiane] (https://github.com/mesos/spark/pull/645). – ptikobj
Widzę, że jest w najnowszej wersji iskry 0.8.0. Będzie musiał ją wyciągnąć, jak się wydaje, ponieważ jest to dość ważna funkcja. – ptikobj
ah, to ma sens. Pracowałem z oddziałem głównym, a nie 0.7.2. – Noah