2016-06-14 308 views
0

我使用saveAsHadoopFileJavaPairRDD將RDD保存爲具有快速壓縮的avro文件。是否有可能強制擴展輸出文件爲snappysaveAsHadoopFile - 文件擴展名

+1

我不能肯定地說,但你應該能夠做類似的東西:'pairRdd.saveAsHadoopFile( 「/ tmp目錄/」,的.class,的.class,TextOutputFormat .class,org.apache.hadoop.io.compress.SnappyCodec.class)'。您需要用您的pairRDD鍵和值類型替換,並將輸出調整爲您期望獲得的結果。好點 ? –

+0

選中此項:http://stackoverflow.com/questions/33464990/i-am-using-spark-1-4-and-trying-to-save-as-orcfile-with-compression-snappy-but-i – RoyaumeIX

+0

謝謝回覆。我知道如何用SnappyCodec編寫avro文件,但它們以「.avro」擴展名保存。我需要他們成爲「.snappy」:) – wikp

回答

0

AvroOutputFormat已硬編碼.avro擴展名,並且不允許對其進行更改。 我上傳了一個patch到Avro JIRA並進行了適當的更改。 如果你有類似的問題,你必須(現在)只是子類AvroOutputFormat,並在saveAsHadoopFile方法中使用它。例如,在斯卡拉:

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