You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "eric baldeschwieler (JIRA)" <ji...@apache.org> on 2006/06/28 18:36:30 UTC

[jira] Commented: (HADOOP-54) SequenceFile should compress blocks, not individual entries

    [ http://issues.apache.org/jira/browse/HADOOP-54?page=comments#action_12418273 ] 

eric baldeschwieler commented on HADOOP-54:
-------------------------------------------

I've been thinking about this.  I think we should use a very simple scheme like the current sequence file.  The writer would take a configurable buffer, maybe 10 meg by default, fill that with key/values and then compress them.  The result would be stored with start markers like the current sequence file, so the partitioning logic could remain unchanged.

Within a block, I think we should compress the keys together in a block and the values in a following block.  Both blocks' lengths should be stored, so that one can quickly scan the keys and then scan only as far as needed in the value blocks.  This would allow very efficient sub-sampling when you have large data blocks.  Which could be a life saver in some of our typical apps.  You'll also get better compression, since you'll be compressing like items together.

Thoughts?

> SequenceFile should compress blocks, not individual entries
> -----------------------------------------------------------
>
>          Key: HADOOP-54
>          URL: http://issues.apache.org/jira/browse/HADOOP-54
>      Project: Hadoop
>         Type: Improvement

>   Components: io
>     Versions: 0.2.0
>     Reporter: Doug Cutting
>     Assignee: Michel Tourn
>      Fix For: 0.4.0

>
> 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