Package org.apache.hadoop.hive.ql.io.orc.OrcRawRecordMerger

Examples of org.apache.hadoop.hive.ql.io.orc.OrcRawRecordMerger.ReaderKey


  private static final Log LOG = LogFactory.getLog(TestOrcRawRecordMerger.class);

  @Test
  public void testOrdering() throws Exception {
    ReaderKey left = new ReaderKey(100, 200, 1200, 300);
    ReaderKey right = new ReaderKey();
    right.setValues(100, 200, 1000, 200);
    assertTrue(right.compareTo(left) < 0);
    assertTrue(left.compareTo(right) > 0);
    assertEquals(false, left.equals(right));
    left.set(right);
    assertTrue(right.compareTo(left) == 0);
    assertEquals(true, right.equals(left));
    right.setRowId(2000);
    assertTrue(right.compareTo(left) > 0);
    left.setValues(1, 2, 3, 4);
    right.setValues(100, 2, 3, 4);
    assertTrue(left.compareTo(right) < 0);
    assertTrue(right.compareTo(left) > 0);
    left.setValues(1, 2, 3, 4);
    right.setValues(1, 100, 3, 4);
    assertTrue(left.compareTo(right) < 0);
    assertTrue(right.compareTo(left) > 0);
    left.setValues(1, 2, 3, 100);
    right.setValues(1, 2, 3, 4);
    assertTrue(left.compareTo(right) < 0);
    assertTrue(right.compareTo(left) > 0);

    // ensure that we are consistent when comparing to the base class
    RecordIdentifier ri = new RecordIdentifier(1, 2, 3);
    assertEquals(1, ri.compareTo(left));
    assertEquals(-1, left.compareTo(ri));
View Full Code Here


    return reader;
  }

  @Test
  public void testReaderPair() throws Exception {
    ReaderKey key = new ReaderKey();
    Reader reader = createMockReader();
    RecordIdentifier minKey = new RecordIdentifier(10, 20, 30);
    RecordIdentifier maxKey = new RecordIdentifier(40, 50, 60);
    ReaderPair pair = new ReaderPair(key, reader, 20, minKey, maxKey,
        new Reader.Options());
    RecordReader recordReader = pair.recordReader;
    assertEquals(10, key.getTransactionId());
    assertEquals(20, key.getBucketId());
    assertEquals(40, key.getRowId());
    assertEquals(120, key.getCurrentTransactionId());
    assertEquals("third", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(40, key.getTransactionId());
    assertEquals(50, key.getBucketId());
    assertEquals(60, key.getRowId());
    assertEquals(130, key.getCurrentTransactionId());
    assertEquals("fourth", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(null, pair.nextRecord);
    Mockito.verify(recordReader).close();
View Full Code Here

    Mockito.verify(recordReader).close();
  }

  @Test
  public void testReaderPairNoMin() throws Exception {
    ReaderKey key = new ReaderKey();
    Reader reader = createMockReader();

    ReaderPair pair = new ReaderPair(key, reader, 20, null, null,
        new Reader.Options());
    RecordReader recordReader = pair.recordReader;
    assertEquals(10, key.getTransactionId());
    assertEquals(20, key.getBucketId());
    assertEquals(20, key.getRowId());
    assertEquals(100, key.getCurrentTransactionId());
    assertEquals("first", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(10, key.getTransactionId());
    assertEquals(20, key.getBucketId());
    assertEquals(30, key.getRowId());
    assertEquals(110, key.getCurrentTransactionId());
    assertEquals("second", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(10, key.getTransactionId());
    assertEquals(20, key.getBucketId());
    assertEquals(40, key.getRowId());
    assertEquals(120, key.getCurrentTransactionId());
    assertEquals("third", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(40, key.getTransactionId());
    assertEquals(50, key.getBucketId());
    assertEquals(60, key.getRowId());
    assertEquals(130, key.getCurrentTransactionId());
    assertEquals("fourth", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(40, key.getTransactionId());
    assertEquals(50, key.getBucketId());
    assertEquals(61, key.getRowId());
    assertEquals(140, key.getCurrentTransactionId());
    assertEquals("fifth", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(null, pair.nextRecord);
    Mockito.verify(recordReader).close();
View Full Code Here

    return reader;
  }

  @Test
  public void testOriginalReaderPair() throws Exception {
    ReaderKey key = new ReaderKey();
    Reader reader = createMockOriginalReader();
    RecordIdentifier minKey = new RecordIdentifier(0, 10, 1);
    RecordIdentifier maxKey = new RecordIdentifier(0, 10, 3);
    boolean[] includes = new boolean[]{true, true};
    ReaderPair pair = new OriginalReaderPair(key, reader, 10, minKey, maxKey,
        new Reader.Options().include(includes));
    RecordReader recordReader = pair.recordReader;
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(2, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());
    assertEquals("third", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(3, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());
    assertEquals("fourth", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(null, pair.nextRecord);
    Mockito.verify(recordReader).close();
View Full Code Here

    return new ValidTxnListImpl(Long.MAX_VALUE + ":");
  }

  @Test
  public void testOriginalReaderPairNoMin() throws Exception {
    ReaderKey key = new ReaderKey();
    Reader reader = createMockOriginalReader();
    ReaderPair pair = new OriginalReaderPair(key, reader, 10, null, null,
        new Reader.Options());
    assertEquals("first", value(pair.nextRecord));
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(0, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());

    pair.next(pair.nextRecord);
    assertEquals("second", value(pair.nextRecord));
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(1, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());

    pair.next(pair.nextRecord);
    assertEquals("third", value(pair.nextRecord));
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(2, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());

    pair.next(pair.nextRecord);
    assertEquals("fourth", value(pair.nextRecord));
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(3, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());

    pair.next(pair.nextRecord);
    assertEquals("fifth", value(pair.nextRecord));
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(4, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());

    pair.next(pair.nextRecord);
    assertEquals(null, pair.nextRecord);
    Mockito.verify(pair.recordReader).close();
  }
View Full Code Here

    OrcStruct event = merger.createValue();

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.UPDATE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 0, 200), id);
    assertEquals("update 1", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 1, 0), id);
    assertEquals("second", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.UPDATE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 2, 200), id);
    assertEquals("update 2", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.UPDATE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 3, 200), id);
    assertEquals("update 3", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 4, 0), id);
    assertEquals("fifth", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 5, 0), id);
    assertEquals("sixth", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 6, 0), id);
    assertEquals("seventh", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.DELETE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 7, 200), id);
    assertEquals(null, OrcRecordUpdater.getRow(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.DELETE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 8, 200), id);
    assertEquals(null, OrcRecordUpdater.getRow(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 9, 0), id);
    assertEquals("tenth", getValue(event));

    assertEquals(false, merger.next(id, event));
    merger.close();

    // make a merger that doesn't collapse events
    merger = new OrcRawRecordMerger(conf, false, baseReader, false, BUCKET,
            createMaximalTxnList(), new Reader.Options(),
            AcidUtils.getPaths(directory.getCurrentDirectories()));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.UPDATE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 0, 200), id);
    assertEquals("update 1", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 0, 0), id);
    assertEquals("first", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 1, 0), id);
    assertEquals("second", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.UPDATE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 2, 200), id);
    assertEquals("update 2", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 2, 0), id);
    assertEquals("third", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.UPDATE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 3, 200), id);
    assertEquals("update 3", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 3, 0), id);
    assertEquals("fourth", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 4, 0), id);
    assertEquals("fifth", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 5, 0), id);
    assertEquals("sixth", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 6, 0), id);
    assertEquals("seventh", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.DELETE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 7, 200), id);
    assertEquals(null, OrcRecordUpdater.getRow(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 7, 0), id);
    assertEquals("eighth", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.DELETE_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 8, 200), id);
    assertEquals(null, OrcRecordUpdater.getRow(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 8, 0), id);
    assertEquals("ninth", getValue(event));

    assertEquals(true, merger.next(id, event));
    assertEquals(OrcRecordUpdater.INSERT_OPERATION,
        OrcRecordUpdater.getOperation(event));
    assertEquals(new ReaderKey(0, BUCKET, 9, 0), id);
    assertEquals("tenth", getValue(event));

    assertEquals(false, merger.next(id, event));
    merger.close();

    // try ignoring the 200 transaction and make sure it works still
    ValidTxnList txns = new ValidTxnListImpl("2000:200");
    merger =
        new OrcRawRecordMerger(conf, true, baseReader, false, BUCKET,
            txns, new Reader.Options(),
            AcidUtils.getPaths(directory.getCurrentDirectories()));
    for(int i=0; i < values.length; ++i) {
      assertEquals(true, merger.next(id, event));
      LOG.info("id = " + id + "event = " + event);
      assertEquals(OrcRecordUpdater.INSERT_OPERATION,
          OrcRecordUpdater.getOperation(event));
      assertEquals(new ReaderKey(0, BUCKET, i, 0), id);
      assertEquals(values[i], getValue(event));
    }

    assertEquals(false, merger.next(id, event));
    merger.close();
View Full Code Here

  private static final Log LOG = LogFactory.getLog(TestOrcRawRecordMerger.class);

  @Test
  public void testOrdering() throws Exception {
    ReaderKey left = new ReaderKey(100, 200, 1200, 300);
    ReaderKey right = new ReaderKey();
    right.setValues(100, 200, 1000, 200);
    assertTrue(right.compareTo(left) < 0);
    assertTrue(left.compareTo(right) > 0);
    assertEquals(false, left.equals(right));
    left.set(right);
    assertTrue(right.compareTo(left) == 0);
    assertEquals(true, right.equals(left));
    right.setRowId(2000);
    assertTrue(right.compareTo(left) > 0);
    left.setValues(1, 2, 3, 4);
    right.setValues(100, 2, 3, 4);
    assertTrue(left.compareTo(right) < 0);
    assertTrue(right.compareTo(left) > 0);
    left.setValues(1, 2, 3, 4);
    right.setValues(1, 100, 3, 4);
    assertTrue(left.compareTo(right) < 0);
    assertTrue(right.compareTo(left) > 0);
    left.setValues(1, 2, 3, 100);
    right.setValues(1, 2, 3, 4);
    assertTrue(left.compareTo(right) < 0);
    assertTrue(right.compareTo(left) > 0);

    // ensure that we are consistent when comparing to the base class
    RecordIdentifier ri = new RecordIdentifier(1, 2, 3);
    assertEquals(1, ri.compareTo(left));
    assertEquals(-1, left.compareTo(ri));
View Full Code Here

    return reader;
  }

  @Test
  public void testReaderPair() throws Exception {
    ReaderKey key = new ReaderKey();
    Reader reader = createMockReader();
    RecordIdentifier minKey = new RecordIdentifier(10, 20, 30);
    RecordIdentifier maxKey = new RecordIdentifier(40, 50, 60);
    ReaderPair pair = new ReaderPair(key, reader, 20, minKey, maxKey,
        new Reader.Options());
    RecordReader recordReader = pair.recordReader;
    assertEquals(10, key.getTransactionId());
    assertEquals(20, key.getBucketId());
    assertEquals(40, key.getRowId());
    assertEquals(120, key.getCurrentTransactionId());
    assertEquals("third", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(40, key.getTransactionId());
    assertEquals(50, key.getBucketId());
    assertEquals(60, key.getRowId());
    assertEquals(130, key.getCurrentTransactionId());
    assertEquals("fourth", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(null, pair.nextRecord);
    Mockito.verify(recordReader).close();
View Full Code Here

    Mockito.verify(recordReader).close();
  }

  @Test
  public void testReaderPairNoMin() throws Exception {
    ReaderKey key = new ReaderKey();
    Reader reader = createMockReader();

    ReaderPair pair = new ReaderPair(key, reader, 20, null, null,
        new Reader.Options());
    RecordReader recordReader = pair.recordReader;
    assertEquals(10, key.getTransactionId());
    assertEquals(20, key.getBucketId());
    assertEquals(20, key.getRowId());
    assertEquals(100, key.getCurrentTransactionId());
    assertEquals("first", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(10, key.getTransactionId());
    assertEquals(20, key.getBucketId());
    assertEquals(30, key.getRowId());
    assertEquals(110, key.getCurrentTransactionId());
    assertEquals("second", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(10, key.getTransactionId());
    assertEquals(20, key.getBucketId());
    assertEquals(40, key.getRowId());
    assertEquals(120, key.getCurrentTransactionId());
    assertEquals("third", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(40, key.getTransactionId());
    assertEquals(50, key.getBucketId());
    assertEquals(60, key.getRowId());
    assertEquals(130, key.getCurrentTransactionId());
    assertEquals("fourth", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(40, key.getTransactionId());
    assertEquals(50, key.getBucketId());
    assertEquals(61, key.getRowId());
    assertEquals(140, key.getCurrentTransactionId());
    assertEquals("fifth", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(null, pair.nextRecord);
    Mockito.verify(recordReader).close();
View Full Code Here

    return reader;
  }

  @Test
  public void testOriginalReaderPair() throws Exception {
    ReaderKey key = new ReaderKey();
    Reader reader = createMockOriginalReader();
    RecordIdentifier minKey = new RecordIdentifier(0, 10, 1);
    RecordIdentifier maxKey = new RecordIdentifier(0, 10, 3);
    boolean[] includes = new boolean[]{true, true};
    ReaderPair pair = new OriginalReaderPair(key, reader, 10, minKey, maxKey,
        new Reader.Options().include(includes));
    RecordReader recordReader = pair.recordReader;
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(2, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());
    assertEquals("third", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(0, key.getTransactionId());
    assertEquals(10, key.getBucketId());
    assertEquals(3, key.getRowId());
    assertEquals(0, key.getCurrentTransactionId());
    assertEquals("fourth", value(pair.nextRecord));

    pair.next(pair.nextRecord);
    assertEquals(null, pair.nextRecord);
    Mockito.verify(recordReader).close();
View Full Code Here

TOP

Related Classes of org.apache.hadoop.hive.ql.io.orc.OrcRawRecordMerger.ReaderKey

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.