2016-06-14 165 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]])