/** * Call this when you only want to get one row. It will set {@code limit} to {@code 1}, and also * set {@code readType} to {@link ReadType#PREAD}. * @return this */ public Scan setOneRowLimit() { return setLimit(1).setReadType(ReadType.PREAD); }
private static Scan getMetaScan(Connection connection, int rowUpperLimit) { Scan scan = new Scan(); int scannerCaching = connection.getConfiguration() .getInt(HConstants.HBASE_META_SCANNER_CACHING, HConstants.DEFAULT_HBASE_META_SCANNER_CACHING); if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS, HConstants.DEFAULT_USE_META_REPLICAS)) { scan.setConsistency(Consistency.TIMELINE); } if (rowUpperLimit > 0) { scan.setLimit(rowUpperLimit); scan.setReadType(Scan.ReadType.PREAD); } scan.setCaching(scannerCaching); return scan; } /**
AsyncTable<?> metaTable, byte[] encodedRegionName) { CompletableFuture<Optional<HRegionLocation>> future = new CompletableFuture<>(); metaTable.scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY)) .whenComplete( (results, err) -> {
.scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY) .withStartRow(MetaTableAccessor.getTableStartRowForMeta(tableName, QueryType.REGION)) .withStopRow(MetaTableAccessor.getTableStopRowForMeta(tableName, QueryType.REGION))),
.scan(new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true) .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(locatePrefetchLimit) .setReadType(ReadType.PREAD), new AdvancedScanResultConsumer() {
/** * Test Case for HBASE-21551 */ @Test public void testStreamReadersCleanup() throws IOException { Set<StoreFileReader> streamReaders = getStreamReaders(); Assert.assertEquals(0, getStreamReaders().size()); try (RegionScannerImpl scanner = REGION.getScanner(new Scan().setReadType(ReadType.STREAM))) { StoreScanner storeScanner = (StoreScanner) (scanner).getStoreHeapForTesting().getCurrentForTesting(); List<StoreFileScanner> sfScanners = storeScanner.getAllScannersForTesting().stream() .filter(kvs -> kvs instanceof StoreFileScanner).map(kvs -> (StoreFileScanner) kvs) .collect(Collectors.toList()); Assert.assertEquals(1, sfScanners.size()); StoreFileScanner sfScanner = sfScanners.get(0); Assert.assertFalse(sfScanner.getReader().shared); // There should be a stream reader Assert.assertEquals(1, getStreamReaders().size()); } Assert.assertEquals(0, getStreamReaders().size()); // The streamsReader should be clear after region close even if there're some opened stream // scanner. RegionScannerImpl scanner = REGION.getScanner(new Scan().setReadType(ReadType.STREAM)); Assert.assertNotNull(scanner); Assert.assertEquals(1, getStreamReaders().size()); REGION.close(); Assert.assertEquals(0, streamReaders.size()); }
@Override boolean testRow(final int i) throws IOException { if (this.testScanner == null) { Scan scan = new Scan().withStartRow(format(opts.startRow)).setCaching(opts.caching) .setCacheBlocks(opts.cacheBlocks).setAsyncPrefetch(opts.asyncPrefetch) .setReadType(opts.scanReadType).setScanMetricsEnabled(true); for (int family = 0; family < opts.families; family++) { byte[] familyName = Bytes.toBytes(FAMILY_NAME_BASE + family); if (opts.addColumns) { for (int column = 0; column < opts.columns; column++) { byte [] qualifier = column == 0? COLUMN_ZERO: Bytes.toBytes("" + column); scan.addColumn(familyName, qualifier); } } else { scan.addFamily(familyName); } } if (opts.filterAll) { scan.setFilter(new FilterAllFilter()); } this.testScanner = table.getScanner(scan); } Result r = testScanner.next(); updateValueSize(r); return true; } }
@Override boolean testRow(final int i) throws IOException { if (this.testScanner == null) { Scan scan = new Scan().withStartRow(format(opts.startRow)).setCaching(opts.caching) .setCacheBlocks(opts.cacheBlocks).setAsyncPrefetch(opts.asyncPrefetch) .setReadType(opts.scanReadType).setScanMetricsEnabled(true); for (int family = 0; family < opts.families; family++) { byte[] familyName = Bytes.toBytes(FAMILY_NAME_BASE + family); if (opts.addColumns) { for (int column = 0; column < opts.columns; column++) { byte [] qualifier = column == 0? COLUMN_ZERO: Bytes.toBytes("" + column); scan.addColumn(familyName, qualifier); } } else { scan.addFamily(familyName); } } if (opts.filterAll) { scan.setFilter(new FilterAllFilter()); } this.testScanner = asyncTable.getScanner(scan); } Result r = testScanner.next(); updateValueSize(r); return true; } }
.setReadType(Scan.ReadType.PREAD); scan.addColumn(FAMILY, COL); scan.setMaxVersions(1);
.withStopRow(startAndStopRow.getSecond()).setCaching(opts.caching) .setCacheBlocks(opts.cacheBlocks).setAsyncPrefetch(opts.asyncPrefetch) .setReadType(opts.scanReadType).setScanMetricsEnabled(true); for (int family = 0; family < opts.families; family++) { byte[] familyName = Bytes.toBytes(FAMILY_NAME_BASE + family);
Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true) .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5) .setReadType(ReadType.PREAD); if (this.useMetaReplicas) { s.setConsistency(Consistency.TIMELINE);
protected Scan constructScan(byte[] valuePrefix) throws IOException { FilterList list = new FilterList(); Filter filter = new SingleColumnValueFilter(FAMILY_ZERO, COLUMN_ZERO, CompareOperator.EQUAL, new BinaryComparator(valuePrefix)); list.addFilter(filter); if (opts.filterAll) { list.addFilter(new FilterAllFilter()); } Scan scan = new Scan().setCaching(opts.caching).setCacheBlocks(opts.cacheBlocks) .setAsyncPrefetch(opts.asyncPrefetch).setReadType(opts.scanReadType) .setScanMetricsEnabled(true); if (opts.addColumns) { for (int column = 0; column < opts.columns; column++) { byte [] qualifier = column == 0? COLUMN_ZERO: Bytes.toBytes("" + column); scan.addColumn(FAMILY_ZERO, qualifier); } } else { scan.addFamily(FAMILY_ZERO); } scan.setFilter(list); return scan; } }
/** * Call this when you only want to get one row. It will set {@code limit} to {@code 1}, and also * set {@code readType} to {@link ReadType#PREAD}. * @return this */ public Scan setOneRowLimit() { return setLimit(1).setReadType(ReadType.PREAD); }
scan.setReadType(Scan.ReadType.PREAD); } else if (proto.hasReadType()) { scan.setReadType(toReadType(proto.getReadType()));
Scan scan = new Scan().withStartRow(getRandomRow(this.rand, opts.totalRows)) .setCaching(opts.caching).setCacheBlocks(opts.cacheBlocks) .setAsyncPrefetch(opts.asyncPrefetch).setReadType(opts.scanReadType) .setScanMetricsEnabled(true); FilterList list = new FilterList();
out.setReadType(readTypeFromThrift(in.getReadType()));
private static Scan getMetaScan(Connection connection, int rowUpperLimit) { Scan scan = new Scan(); int scannerCaching = connection.getConfiguration() .getInt(HConstants.HBASE_META_SCANNER_CACHING, HConstants.DEFAULT_HBASE_META_SCANNER_CACHING); if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS, HConstants.DEFAULT_USE_META_REPLICAS)) { scan.setConsistency(Consistency.TIMELINE); } if (rowUpperLimit > 0) { scan.setLimit(rowUpperLimit); scan.setReadType(Scan.ReadType.PREAD); } scan.setCaching(scannerCaching); return scan; } /**
AsyncTable<?> metaTable, byte[] encodedRegionName) { CompletableFuture<Optional<HRegionLocation>> future = new CompletableFuture<>(); metaTable.scanAll(new Scan().setReadType(ReadType.PREAD).addFamily(HConstants.CATALOG_FAMILY)) .whenComplete( (results, err) -> {
scan.setReadType(Scan.ReadType.PREAD); } else if (proto.hasReadType()) { scan.setReadType(toReadType(proto.getReadType()));
.setScanMetricsEnabled(true) .setSmall(true) .setReadType(ReadType.STREAM) .withStartRow(Bytes.toBytes("row_1")) .withStopRow(Bytes.toBytes("row_2"))