Java Code Examples for org.apache.hadoop.hbase.regionserver.Region#getScanner()
The following examples show how to use
org.apache.hadoop.hbase.regionserver.Region#getScanner() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: HBaseTestingUtility.java From hbase with Apache License 2.0 | 5 votes |
public int countRows(final Region region, final Scan scan) throws IOException { InternalScanner scanner = region.getScanner(scan); try { return countRows(scanner); } finally { scanner.close(); } }
Example 2
Source File: HBaseTestingUtility.java From hbase with Apache License 2.0 | 5 votes |
public Result getClosestRowBefore(Region r, byte[] row, byte[] family) throws IOException { Scan scan = new Scan().withStartRow(row); scan.setSmall(true); scan.setCaching(1); scan.setReversed(true); scan.addFamily(family); try (RegionScanner scanner = r.getScanner(scan)) { List<Cell> cells = new ArrayList<>(1); scanner.next(cells); if (r.getRegionInfo().isMetaRegion() && !isTargetTable(row, cells.get(0))) { return null; } return Result.create(cells); } }
Example 3
Source File: UngroupedAggregateRegionObserver.java From phoenix with Apache License 2.0 | 5 votes |
private RegionScanner rebuildIndices(final RegionScanner innerScanner, final Region region, final Scan scan, final RegionCoprocessorEnvironment env) throws IOException { boolean oldCoproc = region.getTableDescriptor().hasCoprocessor(Indexer.class.getCanonicalName()); byte[] valueBytes = scan.getAttribute(BaseScannerRegionObserver.INDEX_REBUILD_VERIFY_TYPE); IndexTool.IndexVerifyType verifyType = (valueBytes != null) ? IndexTool.IndexVerifyType.fromValue(valueBytes):IndexTool.IndexVerifyType.NONE; if(oldCoproc && verifyType == IndexTool.IndexVerifyType.ONLY) { return new IndexerRegionScanner(innerScanner, region, scan, env); } if (!scan.isRaw()) { Scan rawScan = new Scan(scan); rawScan.setRaw(true); rawScan.setMaxVersions(); rawScan.getFamilyMap().clear(); // For rebuilds we use count (*) as query for regular tables which ends up setting the FKOF on scan // This filter doesn't give us all columns and skips to the next row as soon as it finds 1 col // For rebuilds we need all columns and all versions if (scan.getFilter() instanceof FirstKeyOnlyFilter) { rawScan.setFilter(null); } else if (scan.getFilter() != null) { // Override the filter so that we get all versions rawScan.setFilter(new AllVersionsIndexRebuildFilter(scan.getFilter())); } rawScan.setCacheBlocks(false); for (byte[] family : scan.getFamilyMap().keySet()) { rawScan.addFamily(family); } innerScanner.close(); RegionScanner scanner = region.getScanner(rawScan); return new IndexRebuildRegionScanner(scanner, region, scan, env, this); } return new IndexRebuildRegionScanner(innerScanner, region, scan, env, this); }
Example 4
Source File: PermissionStorage.java From hbase with Apache License 2.0 | 4 votes |
/** * Loads all of the permission grants stored in a region of the {@code _acl_} * table. * * @param aclRegion the acl region * @return a map of the permissions for this table. * @throws IOException if an error occurs */ static Map<byte[], ListMultimap<String, UserPermission>> loadAll(Region aclRegion) throws IOException { if (!isAclRegion(aclRegion)) { throw new IOException("Can only load permissions from "+ACL_TABLE_NAME); } Map<byte[], ListMultimap<String, UserPermission>> allPerms = new TreeMap<>(Bytes.BYTES_RAWCOMPARATOR); // do a full scan of _acl_ table Scan scan = new Scan(); scan.addFamily(ACL_LIST_FAMILY); InternalScanner iScanner = null; try { iScanner = aclRegion.getScanner(scan); while (true) { List<Cell> row = new ArrayList<>(); boolean hasNext = iScanner.next(row); ListMultimap<String, UserPermission> perms = ArrayListMultimap.create(); byte[] entry = null; for (Cell kv : row) { if (entry == null) { entry = CellUtil.cloneRow(kv); } Pair<String, Permission> permissionsOfUserOnTable = parsePermissionRecord(entry, kv, null, null, false, null); if (permissionsOfUserOnTable != null) { String username = permissionsOfUserOnTable.getFirst(); Permission permission = permissionsOfUserOnTable.getSecond(); perms.put(username, new UserPermission(username, permission)); } } if (entry != null) { allPerms.put(entry, perms); } if (!hasNext) { break; } } } finally { if (iScanner != null) { iScanner.close(); } } return allPerms; }