@Override public int compare( BufferedInputStream lhsStream, BufferedInputStream rhsStream ) { byte[] lhs = lhsStream.getBuffer(); int lhsPos = lhsStream.getPosition(); int lhsLen = readLen( lhs, lhsPos ); lhsStream.skip( lhsLen + 4 ); byte[] rhs = rhsStream.getBuffer(); int rhsPos = rhsStream.getPosition(); int rhsLen = readLen( rhs, rhsPos ); rhsStream.skip( rhsLen + 4 ); return WritableComparator.compareBytes( lhs, lhsPos + 4, lhsLen, rhs, rhsPos + 4, rhsLen ); }
public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); // only compare the first tuple in the pair return compareTuples( keyTypes, groupComparators ); } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } }
@Override public void setConf( Configuration conf ) { if( conf == null ) return; super.setConf( conf ); tupleSerialization = new TupleSerialization( conf ); keyTypes = tupleSerialization.getKeyTypes(); groupComparators = deserializeComparatorsFor( "cascading.group.comparator" ); groupComparators = delegatingComparatorsFor( keyTypes, groupComparators ); if( performRawComparison() ) return; lhsBuffer = new BufferedInputStream(); rhsBuffer = new BufferedInputStream(); // get new readers so deserializers don't compete for the buffer lhsStream = getHadoopTupleInputStream( lhsBuffer, tupleSerialization.getElementReader() ); rhsStream = getHadoopTupleInputStream( rhsBuffer, tupleSerialization.getElementReader() ); }
@Override public void setConf( Configuration conf ) { if( conf == null ) return; super.setConf( conf ); tupleSerialization = new TupleSerialization( conf ); keyTypes = tupleSerialization.getKeyTypes(); groupComparators = deserializeComparatorsFor( "cascading.group.comparator" ); groupComparators = delegatingComparatorsFor( keyTypes, groupComparators ); if( performRawComparison() ) return; lhsBuffer = new BufferedInputStream(); rhsBuffer = new BufferedInputStream(); // get new readers so deserializers don't compete for the buffer lhsStream = getHadoopTupleInputStream( lhsBuffer, tupleSerialization.getElementReader() ); rhsStream = getHadoopTupleInputStream( rhsBuffer, tupleSerialization.getElementReader() ); }
@Override public int compare( BufferedInputStream lhsStream, BufferedInputStream rhsStream ) { byte[] lhs = lhsStream.getBuffer(); int lhsPos = lhsStream.getPosition(); int lhsLen = readLen( lhs, lhsPos ); lhsStream.skip( lhsLen + 4 ); byte[] rhs = rhsStream.getBuffer(); int rhsPos = rhsStream.getPosition(); int rhsLen = readLen( rhs, rhsPos ); rhsStream.skip( rhsLen + 4 ); return WritableComparator.compareBytes( lhs, lhsPos + 4, lhsLen, rhs, rhsPos + 4, rhsLen ); }
public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); // only compare the first tuple in the pair return compareTuples( keyTypes, groupComparators ); } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } }
@Override public int compare(BufferedInputStream lhs, BufferedInputStream rhs) { if (lhs == null && rhs == null) { return 0; } else if (lhs == null) { return -1; } else if (rhs == null) { return 1; } byte[] lhsBuffer = lhs.getBuffer(); int lhsOff = lhs.getPosition(); int lhsSize = readSize(lhsBuffer, lhsOff); byte[] rhsBuffer = rhs.getBuffer(); int rhsOff = rhs.getPosition(); int rhsSize = readSize(rhsBuffer, rhsOff); //use hadoop's lexicographical byte array ordering int result = compareByteArrays( lhsBuffer, lhsOff + NUM_BYTES_RESERVED_FOR_ARRAY_LENGTH, lhsSize, rhsBuffer, rhsOff + NUM_BYTES_RESERVED_FOR_ARRAY_LENGTH, rhsSize); lhs.skip(lhsSize + NUM_BYTES_RESERVED_FOR_ARRAY_LENGTH); rhs.skip(rhsSize + NUM_BYTES_RESERVED_FOR_ARRAY_LENGTH); return result; }
@Override public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); return compareTuples( keyTypes, groupComparators ); } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } } }
@Override public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); return compareTuples( keyTypes, groupComparators ); } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } } }
public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); int c = compareTuples( keyTypes, groupComparators ); if( c != 0 ) return c; return compareTuples( sortTypes, sortComparators ); } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } }
public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); int c = compareTuples( keyTypes, groupComparators ); if( c != 0 ) return c; return compareTuples( sortTypes, sortComparators ); } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } }
public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); // pop off index lhsStream.readVInt(); rhsStream.readVInt(); return compareTuples( null, groupComparators ); } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } }
public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); int lhsIndex = lhsStream.readVInt(); int rhsIndex = rhsStream.readVInt(); int c = compareTuples( keyTypes, groupComparators ); if( c != 0 ) return c; return rhsIndex - lhsIndex; } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } }
public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); // pop off index lhsStream.readVInt(); rhsStream.readVInt(); return compareTuples( null, groupComparators ); } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } }
public int compare( byte[] b1, int s1, int l1, byte[] b2, int s2, int l2 ) { try { lhsBuffer.reset( b1, s1, l1 ); rhsBuffer.reset( b2, s2, l2 ); int lhsIndex = lhsStream.readVInt(); int rhsIndex = rhsStream.readVInt(); int c = compareTuples( keyTypes, groupComparators ); if( c != 0 ) return c; return rhsIndex - lhsIndex; } catch( IOException exception ) { throw new CascadingException( exception ); } finally { lhsBuffer.clear(); rhsBuffer.clear(); } }