[ 
https://issues.apache.org/jira/browse/CRUNCH-368?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13955232#comment-13955232
 ] 

Chao Shi commented on CRUNCH-368:
---------------------------------

Hi Josh,

I think this was a bug (I'm not very sure). The code before this patch may 
compare two WritableComparable of different concrete type. The below code is an 
example in IntWritable#compareTo, which does not handle comparison with 
different
type correctly.

{code}
  /** Compares two IntWritables. */
  @Override
  public int compareTo(IntWritable o) {
    int thisValue = this.value;
    int thatValue = o.value;
    return (thisValue<thatValue ? -1 : (thisValue==thatValue ? 0 : 1));
  }
{code}

> TupleWritable.Comparator
> ------------------------
>
>                 Key: CRUNCH-368
>                 URL: https://issues.apache.org/jira/browse/CRUNCH-368
>             Project: Crunch
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.10.0, 0.8.3
>            Reporter: Chao Shi
>            Assignee: Chao Shi
>         Attachments: crunch-368 benchmark.pdf, crunch-368.patch, gen_data.py
>
>
> This patch should improve comparison performance on TupleWritables. It saves 
> the deserialization overhead. It is particularly useful when the input tuple 
> are large, e.g. contains long strings.
> Please note that this changes the binary format of TupleWritable. It adds a 
> var-int indicating size of field after each type code. This is a limitation 
> of the writable system. We do not know the size of each field until fully 
> desalinizing it. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to