[ http://issues.apache.org/jira/browse/HADOOP-54?page=comments#action_12423414 ] Owen O'Malley commented on HADOOP-54: -------------------------------------
Sorry for being dense. I missed the fact that you wanted to preserve key-value pair compression as an option. I'd propose spliting the classes like: SequenceFile.Writer // uncompressed SequenceFile.RecordCompressWriter extends Writer SequenceFile.BlockCompressWriter extends Writer They would have the current interface, with the following new functions: void append(byte[] key, int keyOffset, int keyLength, byte[] value, int valueOffset, int valueLength); boolean canAppendCompressed(); void appendCompressed(byte[] key, int keyOffset, int keyLength, byte[] value, int valueOffset, int valueLength); when we add custom compressors, we can add the compressor to the constructors. The Reader should have methods like: boolean next(DataOutputStream key, DataOutputStream value); boolean canReadCompressed(); void readCompressed(DataOutputStream key, DataOutputStream value); when we add custom compressors, we can add a getter for them like: StreamCompressor getCompressor(); As an implementation, I'd consider having SequenceFile.Reader be a bridge to the class that is doing the reading based on the how it is compressed. Thoughts? > SequenceFile should compress blocks, not individual entries > ----------------------------------------------------------- > > Key: HADOOP-54 > URL: http://issues.apache.org/jira/browse/HADOOP-54 > Project: Hadoop > Issue Type: Improvement > Components: io > Affects Versions: 0.2.0 > Reporter: Doug Cutting > Assigned To: Arun C Murthy > Fix For: 0.5.0 > > Attachments: VIntCompressionResults.txt > > > SequenceFile will optionally compress individual values. But both > compression and performance would be much better if sequences of keys and > values are compressed together. Sync marks should only be placed between > blocks. This will require some changes to MapFile too, so that all file > positions stored there are the positions of blocks, not entries within > blocks. Probably this can be accomplished by adding a > getBlockStartPosition() method to SequenceFile.Writer. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira