Java Code Examples for org.apache.hadoop.hbase.client.Scan.getCacheBlocks()

The following are Jave code examples for showing how to use getCacheBlocks() of the org.apache.hadoop.hbase.client.Scan class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
Example 1
Project: ditb   File: StoreScanner.java   Source Code and License Vote up 6 votes
/**
 * Opens a scanner across memstore, snapshot, and all StoreFiles. Assumes we
 * are not in a compaction.
 *
 * @param store   who we scan
 * @param scan    the spec
 * @param columns which columns we are scanning
 * @throws IOException
 */
public StoreScanner(Store store, ScanInfo scanInfo, Scan scan, final NavigableSet<byte[]> columns,
    long readPt) throws IOException {
  this(store, scan, scanInfo, columns, readPt, scan.getCacheBlocks());
  if (columns != null && scan.isRaw()) {
    throw new DoNotRetryIOException("Cannot specify any column for a raw scan");
  }
  matcher = new ScanQueryMatcher(scan, scanInfo, columns, ScanType.USER_SCAN, Long.MAX_VALUE,
      HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, store.getCoprocessorHost());
  this.store.addChangedReaderObserver(this);
  // Pass columns to try to filter out unnecessary StoreFiles.
  List<KeyValueScanner> scanners = getScannersNoCompaction();
  // Seek all scanners to the start of the Row (or if the exact matching row
  // key does not exist, then to the start of the next matching Row).
  // Always check bloom filter to optimize the top row seek for delete
  // family marker.
  seekScanners(scanners, matcher.getStartKey(), explicitColumnQuery && lazySeekEnabledGlobally,
      parallelSeekEnabled);
  // set storeLimit
  this.storeLimit = scan.getMaxResultsPerColumnFamily();
  // set rowOffset
  this.storeOffset = scan.getRowOffsetPerColumnFamily();
  // Combine all seeked scanners with a heap
  resetKVHeap(scanners, store.getComparator());
}
 
Example 2
Project: ditb   File: StoreScanner.java   Source Code and License Vote up 6 votes
public StoreScanner(Store store, ScanInfo scanInfo, Scan scan, final NavigableSet<byte[]> columns,
    long readPt, LMDIndexConstants constants) throws IOException {
  this(store, scan, scanInfo, columns, readPt, scan.getCacheBlocks());
  if (columns != null && scan.isRaw()) {
    throw new DoNotRetryIOException("Cannot specify any column for a raw scan");
  }
  matcher = new ScanQueryMatcher(scan, scanInfo, columns, ScanType.USER_SCAN, Long.MAX_VALUE,
      HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, store.getCoprocessorHost());
  this.store.addChangedReaderObserver(this);
  // Pass columns to try to filter out unnecessary StoreFiles.
  List<KeyValueScanner> scanners =
      getLMDCIndexDirectScannersNoCompaction(ScanRange.ScanRangeList.getScanRangeList(scan));
  // Seek all scanners to the start of the Row (or if the exact matching row
  // key does not exist, then to the start of the next matching Row).
  // Always check bloom filter to optimize the top row seek for delete
  // family marker.
  seekScanners(scanners, matcher.getStartKey(), explicitColumnQuery && lazySeekEnabledGlobally,
      parallelSeekEnabled);
  // set storeLimit
  this.storeLimit = scan.getMaxResultsPerColumnFamily();
  // set rowOffset
  this.storeOffset = scan.getRowOffsetPerColumnFamily();
  // Combine all seeked scanners with a heap
  resetKVHeap(scanners, store.getComparator());
}
 
Example 3
Project: ditb   File: StoreScanner.java   Source Code and License Vote up 6 votes
private StoreScanner(final Scan scan, ScanInfo scanInfo, ScanType scanType,
    final NavigableSet<byte[]> columns, final List<KeyValueScanner> scanners, long earliestPutTs,
    long readPt) throws IOException {
  this(null, scan, scanInfo, columns, readPt, scan.getCacheBlocks());
  this.matcher =
      new ScanQueryMatcher(scan, scanInfo, columns, scanType, Long.MAX_VALUE, earliestPutTs,
          oldestUnexpiredTS, now, null);

  // In unit tests, the store could be null
  if (this.store != null) {
    this.store.addChangedReaderObserver(this);
  }
  // Seek all scanners to the initial key
  seekScanners(scanners, matcher.getStartKey(), false, parallelSeekEnabled);
  resetKVHeap(scanners, scanInfo.getComparator());
}
 
Example 4
Project: ditb   File: StoreScanner.java   Source Code and License Vote up 5 votes
public StoreScanner(Store store, ScanInfo scanInfo, Scan scan, final NavigableSet<byte[]> columns,
    long readPt, ScanRange scanRange, LCIndexMemStoreScanner2 memScanner) throws IOException {
  this(store, scan, scanInfo, columns, readPt, scan.getCacheBlocks());
  if (columns != null && scan.isRaw()) {
    throw new DoNotRetryIOException("Cannot specify any column for a raw scan");
  }
  matcher = new ScanQueryMatcher(scan, scanInfo, columns, ScanType.USER_SCAN, Long.MAX_VALUE,
      HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, store.getCoprocessorHost());
  this.store.addChangedReaderObserver(this);
  // Pass columns to try to filter out unnecessary StoreFiles.
  List<KeyValueScanner> scanners = getLCIndexScannersNoCompaction(scanRange, readPt, memScanner);
  // Seek all scanners to the start of the Row (or if the exact matching row
  // key does not exist, then to the start of the next matching Row).
  // Always check bloom filter to optimize the top row seek for delete
  // family marker.
  for (KeyValueScanner scanner : scanners) {
    //      System.out.println(
    //          "winter before init StoreScanner, peek of scanner: " + indexedPeekToString(scanner)
    //              + ", scanner is: " + scanner.getClass().getName());
    scanner.seek(matcher.getStartKey());
    //      System.out.println(
    //          "winter after init StoreScanner, peek of scanner: " + indexedPeekToString(scanner)
    //              + ", scanner is: " + scanner.getClass().getName());
  }
  //    this.storeLimit = scan.getMaxResultsPerColumnFamily();
  //    this.storeOffset = scan.getRowOffsetPerColumnFamily();
  resetKVHeap(scanners,
      store.getComparator()); // same as heap = new KeyValueHeap(scanners, store.getComparator());
}
 
Example 5
Project: ditb   File: StoreIndexScanner.java   Source Code and License Vote up 4 votes
public StoreIndexScanner(Store store, List<KeyValueScanner> scanners, KVComparator comparator,
    IndexKVComparator indexComparator, Range range, Scan scan, Set<ByteArray> joinSet,
    boolean isAND) throws IOException {
  // winter scanner is always 1? in my test it is 1 indeed
  this.store = store;
  this.joinSet = joinSet;
  this.isAND = isAND;
  this.memstoreScanner = scanners;
  this.comparator = comparator;
  this.indexComparator = indexComparator;
  this.range = range;
  this.isGet = scan.isGetScan();
  this.cacheBlocks = scan.getCacheBlocks();
  if (isAND) {
    this.isEmptySet = this.joinSet.isEmpty();
    this.indexSet = new HashSet<ByteArray>(10000);
  }
  this.startRow = scan.getStartRow();
  this.startKV = KeyValue.createFirstOnRow(startRow);
  this.stopRow =
      Bytes.compareTo(scan.getStopRow(), HConstants.EMPTY_BYTE_ARRAY) == 0 ? null : scan
          .getStopRow();
  this.stopKV =
      Bytes.compareTo(scan.getStopRow(), HConstants.EMPTY_BYTE_ARRAY) == 0 ? null : KeyValue
          .createLastOnRow(scan.getStopRow());
  this.stopRowCmpValue = scan.isGetScan() ? -1 : 0;

  if (range.getStartValue() != null) {
    switch (range.getStartType()) {
    case EQUAL:
      startIKV =
          IndexKeyValue.createFirstOnQualifier(range.getQualifier(), range.getStartValue());
      stopIKV = startIKV;
      stopIKVCmpValue = -1;
      break;
    case GREATER_OR_EQUAL:
      startIKV =
          IndexKeyValue.createFirstOnQualifier(range.getQualifier(), range.getStartValue());
      stopIKV = null;
      stopIKVCmpValue = 0;
      break;
    case GREATER:
      startIKV = IndexKeyValue.createLastOnQualifier(range.getQualifier(), range.getStartValue());
      stopIKV = null;
      stopIKVCmpValue = 0;
      break;
    default:
      throw new IOException("Invalid Range:" + range);
    }
  } else {
    startIKV = IndexKeyValue.createFirstOnQualifier(range.getQualifier());
    stopIKV = null;
  }

  if (range.getStopValue() != null) {
    switch (range.getStopType()) {
    case LESS:
      stopIKV = IndexKeyValue.createFirstOnQualifier(range.getQualifier(), range.getStopValue());
      stopIKVCmpValue = 0;
      break;
    case LESS_OR_EQUAL:
      stopIKV = IndexKeyValue.createFirstOnQualifier(range.getQualifier(), range.getStopValue());
      stopIKVCmpValue = -1;
      break;
    default:
      throw new IOException("Invalid Range:" + range);
    }
  }
  this.needToRefresh = false;
  getScanners();
}