@Override public Scanner createScanner(String tableName, Authorizations authorizations) throws TableNotFoundException { checkArgument(tableName != null, "tableName is null"); checkArgument(authorizations != null, "authorizations is null"); return new ScannerImpl(context, getTableId(tableName), authorizations); }
ScannerImpl mdScanner = new ScannerImpl(HdfsZooInstance.getInstance(), SecurityConstants.getSystemCredentials(), Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); mdScanner.setBatchSize(1000); mdScanner.fetchColumnFamily(Constants.METADATA_DATAFILE_COLUMN_FAMILY); mdScanner.setRange(new Range(rowName));
@Override public synchronized Iterator<Entry<Key,Value>> iterator() { return new ScannerIterator(context, tableId, authorizations, range, size, getTimeOut(), this, isolated, readaheadThreshold); }
ScannerImpl scanner2 = new ScannerImpl(HdfsZooInstance.getInstance(), credentials, Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); scanner2.setRange(new Range(prevRowKey, prevRowKey.followingKey(PartialKey.ROW))); if (!scanner2.iterator().hasNext()) { log.info("Rolling back incomplete split " + metadataEntry + " " + metadataPrevEndRow); rollBackSplit(metadataEntry, KeyExtent.decodePrevEndRow(oper), credentials, lock); Scanner scanner3 = new ScannerImpl(HdfsZooInstance.getInstance(), credentials, Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); Key rowKey = new Key(metadataEntry);
Constants.METADATA_SPLIT_RATIO_COLUMN, Constants.METADATA_OLD_PREV_ROW_COLUMN, Constants.METADATA_TIME_COLUMN}); ScannerImpl scanner = new ScannerImpl(HdfsZooInstance.getInstance(), SecurityConstants.getSystemCredentials(), Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); scanner.setRange(extent.toMetadataRange());
@Deprecated @Override public int getTimeOut() { long timeout = getTimeout(TimeUnit.SECONDS); if (timeout >= Integer.MAX_VALUE) return Integer.MAX_VALUE; return (int) timeout; }
try (ScannerImpl scanner2 = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) { scanner2.setRange(new Range(prevRowKey, prevRowKey.followingKey(PartialKey.ROW))); if (!scanner2.iterator().hasNext()) { log.info("Rolling back incomplete split " + metadataEntry + " " + metadataPrevEndRow); MetadataTableUtil.rollBackSplit(metadataEntry, KeyExtent.decodePrevEndRow(oper), context, SortedMap<FileRef,DataFileValue> lowDatafileSizes = new TreeMap<>(); try (Scanner scanner3 = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) { Key rowKey = new Key(metadataEntry);
try (ScannerImpl scanner = new ScannerImpl(context, tableToVerify, Authorizations.EMPTY)) { scanner.setRange(extent.toMetadataRange()); for (Entry<Key,Value> entry : scanner) tkv.put(entry.getKey(), entry.getValue());
public static Map<String,Long> getBulkFilesLoaded(TCredentials credentials, Text metadataRow) { Map<String,Long> ret = new HashMap<String,Long>(); Scanner scanner = new ScannerImpl(HdfsZooInstance.getInstance(), credentials, Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); scanner.setRange(new Range(metadataRow)); scanner.fetchColumnFamily(Constants.METADATA_BULKFILE_COLUMN_FAMILY); for (Entry<Key,Value> entry : scanner) { String file = entry.getKey().getColumnQualifier().toString(); Long tid = Long.parseLong(entry.getValue().toString()); ret.put(file, tid); } return ret; }
/** * During an upgrade we need to move deletion requests for files under the !METADATA table to the * root tablet. */ public static void moveMetaDeleteMarkers(ClientContext context) { String oldDeletesPrefix = "!!~del"; Range oldDeletesRange = new Range(oldDeletesPrefix, true, "!!~dem", false); // move old delete markers to new location, to standardize table schema between all metadata // tables try (Scanner scanner = new ScannerImpl(context, RootTable.ID, Authorizations.EMPTY)) { scanner.setRange(oldDeletesRange); for (Entry<Key,Value> entry : scanner) { String row = entry.getKey().getRow().toString(); if (row.startsWith(oldDeletesPrefix)) { moveDeleteEntry(context, RootTable.OLD_EXTENT, entry, row, oldDeletesPrefix); } else { break; } } } }
private void ensureTabletHasNoUnexpectedMetadataEntries(AccumuloServerContext context, KeyExtent extent, SortedMap<FileRef,DataFileValue> expectedMapFiles) throws Exception { try (Scanner scanner = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) { scanner.setRange(extent.toMetadataRange());
public static Map<Long,? extends Collection<FileRef>> getBulkFilesLoaded(ClientContext context, KeyExtent extent) throws IOException { Text metadataRow = extent.getMetadataEntry(); Map<Long,List<FileRef>> result = new HashMap<>(); VolumeManager fs = VolumeManagerImpl.get(); try (Scanner scanner = new ScannerImpl(context, extent.isMeta() ? RootTable.ID : MetadataTable.ID, Authorizations.EMPTY)) { scanner.setRange(new Range(metadataRow)); scanner.fetchColumnFamily(TabletsSection.BulkFileColumnFamily.NAME); for (Entry<Key,Value> entry : scanner) { Long tid = Long.parseLong(entry.getValue().toString()); List<FileRef> lst = result.get(tid); if (lst == null) { result.put(tid, lst = new ArrayList<>()); } lst.add(new FileRef(fs, entry.getKey())); } } return result; }
public static SortedMap<String,DataFileValue> getDataFileSizes(KeyExtent extent, TCredentials credentials) { TreeMap<String,DataFileValue> sizes = new TreeMap<String,DataFileValue>(); Scanner mdScanner = new ScannerImpl(HdfsZooInstance.getInstance(), credentials, Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); mdScanner.fetchColumnFamily(Constants.METADATA_DATAFILE_COLUMN_FAMILY); Text row = extent.getMetadataEntry(); Key endKey = new Key(row, Constants.METADATA_DATAFILE_COLUMN_FAMILY, new Text("")); endKey = endKey.followingKey(PartialKey.ROW_COLFAM); mdScanner.setRange(new Range(new Key(row), endKey)); for (Entry<Key,Value> entry : mdScanner) { if (!entry.getKey().getRow().equals(row)) break; DataFileValue dfv = new DataFileValue(entry.getValue().get()); sizes.put(entry.getKey().getColumnQualifier().toString(), dfv); } return sizes; }
public static SortedMap<FileRef,DataFileValue> getDataFileSizes(KeyExtent extent, ClientContext context) throws IOException { TreeMap<FileRef,DataFileValue> sizes = new TreeMap<>(); try (Scanner mdScanner = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) { mdScanner.fetchColumnFamily(DataFileColumnFamily.NAME); Text row = extent.getMetadataEntry(); VolumeManager fs = VolumeManagerImpl.get(); Key endKey = new Key(row, DataFileColumnFamily.NAME, new Text("")); endKey = endKey.followingKey(PartialKey.ROW_COLFAM); mdScanner.setRange(new Range(new Key(row), endKey)); for (Entry<Key,Value> entry : mdScanner) { if (!entry.getKey().getRow().equals(row)) break; DataFileValue dfv = new DataFileValue(entry.getValue().get()); sizes.put(new FileRef(fs, entry.getKey()), dfv); } return sizes; } }
public static void moveMetaDeleteMarkersFrom14(ClientContext context) { // new KeyExtent is only added to force update to write to the metadata table, not the root // table KeyExtent notMetadata = new KeyExtent("anythingNotMetadata", null, null); // move delete markers from the normal delete keyspace to the root tablet delete keyspace if the // files are for the !METADATA table try (Scanner scanner = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) { scanner.setRange(MetadataSchema.DeletesSection.getRange()); for (Entry<Key,Value> entry : scanner) { String row = entry.getKey().getRow().toString(); if (row.startsWith(MetadataSchema.DeletesSection.getRowPrefix() + "/" + MetadataTable.ID)) { moveDeleteEntry(context, notMetadata, entry, row, MetadataSchema.DeletesSection.getRowPrefix()); } else { break; } } } }
/** * During an upgrade from Accumulo 1.4 -> 1.5, we need to move deletion requests for files under the !METADATA table to the root tablet. */ public static void moveMetaDeleteMarkers(Instance instance, TCredentials creds) { // move delete markers from the normal delete keyspace to the root tablet delete keyspace if the files are for the !METADATA table Scanner scanner = new ScannerImpl(instance, creds, Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); scanner.setRange(new Range(Constants.METADATA_DELETES_KEYSPACE)); for (Entry<Key,Value> entry : scanner) { String row = entry.getKey().getRow().toString(); if (row.startsWith(Constants.METADATA_DELETE_FLAG_PREFIX + "/" + Constants.METADATA_TABLE_ID)) { String filename = row.substring(Constants.METADATA_DELETE_FLAG_PREFIX.length()); // add the new entry first log.info("Moving " + filename + " marker to the root tablet"); Mutation m = new Mutation(Constants.METADATA_DELETE_FLAG_FOR_METADATA_PREFIX + filename); m.put(new byte[] {}, new byte[] {}, new byte[] {}); update(creds, m); // remove the old entry m = new Mutation(entry.getKey().getRow()); m.putDelete(new byte[] {}, new byte[] {}); update(creds, m); } else { break; } } } }
try (Scanner scanner = new ScannerImpl(context, systemTableToCheck, Authorizations.EMPTY)) { scanner.fetchColumnFamily(LogColumnFamily.NAME); scanner.fetchColumnFamily(DataFileColumnFamily.NAME);
Scanner scanner = new ScannerImpl(HdfsZooInstance.getInstance(), credentials, Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); scanner.fetchColumnFamily(Constants.METADATA_LOG_COLUMN_FAMILY); scanner.fetchColumnFamily(Constants.METADATA_DATAFILE_COLUMN_FAMILY);
private static Scanner getTabletLogScanner(TCredentials credentials, KeyExtent extent) { Scanner scanner = new ScannerImpl(HdfsZooInstance.getInstance(), credentials, Constants.METADATA_TABLE_ID, Constants.NO_AUTHS); scanner.fetchColumnFamily(Constants.METADATA_LOG_COLUMN_FAMILY); Text start = extent.getMetadataEntry(); Key endKey = new Key(start, Constants.METADATA_LOG_COLUMN_FAMILY); endKey = endKey.followingKey(PartialKey.ROW_COLFAM); scanner.setRange(new Range(new Key(start), endKey)); return scanner; }
private static Scanner getTabletLogScanner(ClientContext context, KeyExtent extent) { String tableId = MetadataTable.ID; if (extent.isMeta()) tableId = RootTable.ID; Scanner scanner = new ScannerImpl(context, tableId, Authorizations.EMPTY); scanner.fetchColumnFamily(LogColumnFamily.NAME); Text start = extent.getMetadataEntry(); Key endKey = new Key(start, LogColumnFamily.NAME); endKey = endKey.followingKey(PartialKey.ROW_COLFAM); scanner.setRange(new Range(new Key(start), endKey)); return scanner; }