2016-06-14 15 views
0

Ich verwende saveAsHadoopFile von JavaPairRDD, um RDD als AVRO-Datei mit bissiger Komprimierung zu speichern. Ist es möglich, die Erweiterung von Ausgabedateien auf snappy zu erzwingen?saveAsHadoopFile - Dateierweiterung

+1

ich nicht sicher sagen können, aber Sie sollten in der Lage sein, etwas Derartiges zu tun: 'pairRdd.saveAsHadoopFile ("/ tmp /", .class-, .class-, TextOutputFormat .class, org.apache.hadoop.io.compress.SnappyCodec.class) '. Sie müssen und durch Ihre Schlüssel und Werttypen pairRDD ersetzen und die Ausgabe an das anpassen, was Sie erreichen möchten. Etwas besser ? –

+0

Überprüfen Sie dies: http://StackOverflow.com/Questions/33464990/I-am-using-Spark-1-4-and-try-to-save-as-orcfile-with-Compression-SNAVY-BUT-I – RoyaumeIX

+0

Danke für die Antwort. Ich weiß, wie man Avro-Dateien mit SnappyCodec schreibt, aber sie werden mit der Erweiterung ".avro" gespeichert. Ich brauche sie ".snappy" :) – wikp

Antwort

0

AvroOutputFormat hat hardcodiert .avro Erweiterung und erlaubt es nicht, es zu ändern. Ich habe eine patch auf die Avro JIRA mit entsprechenden Änderungen hochgeladen. Wenn Sie ein ähnliches Problem haben, müssen Sie (wie jetzt) ​​einfach die Unterklasse AvroOutputFormat verwenden und sie in saveAsHadoopFile Methode verwenden. Zum Beispiel in Scala:

rdd.saveAsHadoopFile("output/path", 
    classOf[AvroWrapper[GenericRecord]], 
    classOf[NullWritable], 
    classOf[YourOutputFormatClassName[GenericRecord]])