hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Owen O'Malley (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-54) SequenceFile should compress blocks, not individual entries
Date Tue, 25 Jul 2006 19:08:15 GMT
    [ 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

        

Mime
View raw message