@VisibleForTesting protected Stream<KeyExtent> lookupExtents(Text row) throws TableNotFoundException, AccumuloException, AccumuloSecurityException { return TabletsMetadata.builder().forTable(tableId).overlapping(row, null).checkConsistency() .fetchPrev().build(ctx).stream().limit(100).map(TabletMetadata::getExtent); }
@Override public TabletsMetadata build(AccumuloClient client) { try { Scanner scanner = new IsolatedScanner(client.createScanner(table, Authorizations.EMPTY)); scanner.setRange(range); if (checkConsistency && !fetchedCols.contains(FetchedColumns.PREV_ROW)) { fetchPrev(); } for (Text fam : families) { scanner.fetchColumnFamily(fam); } for (ColumnFQ col : qualifiers) { col.fetch(scanner); } if (families.size() == 0 && qualifiers.size() == 0) { fetchedCols = EnumSet.allOf(FetchedColumns.class); } Iterable<TabletMetadata> tmi = TabletMetadata.convert(scanner, fetchedCols, checkConsistency, saveKeyValues); if (endRow != null) { // create an iterable that will stop at the tablet which contains the endRow return new TabletsMetadata(scanner, () -> new TabletMetadataIterator(tmi.iterator(), endRow)); } else { return new TabletsMetadata(scanner, tmi); } } catch (TableNotFoundException e) { throw new RuntimeException(e); } }
Predicate<String> fileSelector) { Iterable<TabletMetadata> tmi = TabletsMetadata.builder().forTable(tableId) .overlapping(startRow, endRow).fetchFiles().fetchLocation().fetchLast().fetchPrev() .build(ctx);
try (TabletsMetadata tablets = TabletsMetadata.builder().forTablet(extent).fetchFiles() .fetchLogs().fetchPrev().build(context)) {
int tabletCount = 0; TabletsMetadata tablets = TabletsMetadata.builder().forTable(tableId) .overlapping(startRow, endRow).fetchLocation().fetchPrev().fetchCompactId() .build(master.getContext());
private void checkForMerge(final Master master) throws Exception { VolumeManager fs = master.getFileSystem(); final Path bulkDir = new Path(bulkInfo.sourceDir); try (LoadMappingIterator lmi = BulkSerialize.readLoadMapping(bulkDir.toString(), bulkInfo.tableId, p -> fs.open(p))) { TabletIterFactory tabletIterFactory = startRow -> TabletsMetadata.builder() .forTable(bulkInfo.tableId).overlapping(startRow, null).checkConsistency().fetchPrev() .build(master.getContext()).stream().map(TabletMetadata::getExtent).iterator(); checkForMerge(bulkInfo.tableId.canonicalID(), Iterators.transform(lmi, entry -> entry.getKey()), tabletIterFactory); } }
try (TabletsMetadata tablets = TabletsMetadata.builder().forTable(tableId) .overlapping(startRow, endRow).fetchFlushId().fetchLocation().fetchLogs().fetchPrev() .build(master.getContext())) {
@Override public Stream<Reference> getReferences() { Stream<TabletMetadata> tabletStream = TabletsMetadata.builder().scanTable(tableName) .checkConsistency().fetchDir().fetchFiles().fetchScans().build(getClient()).stream(); Stream<Reference> refStream = tabletStream.flatMap(tm -> { Stream<Reference> refs = Stream.concat(tm.getFiles().stream(), tm.getScans().stream()) .map(f -> new Reference(tm.getTableId(), f, false)); if (tm.getDir() != null) { refs = Stream.concat(refs, Stream.of(new Reference(tm.getTableId(), tm.getDir(), true))); } return refs; }); return refStream; }
private static Iterable<TabletMetadata> createCloneScanner(String testTableName, Table.ID tableId, AccumuloClient client) throws TableNotFoundException { String tableName; Range range; if (testTableName != null) { tableName = testTableName; range = TabletsSection.getRange(tableId); } else if (tableId.equals(MetadataTable.ID)) { tableName = RootTable.NAME; range = TabletsSection.getRange(); } else { tableName = MetadataTable.NAME; range = TabletsSection.getRange(tableId); } return TabletsMetadata.builder().scanTable(tableName).overRange(range).checkConsistency() .saveKeyValues().fetchFiles().fetchLocation().fetchLast().fetchCloned().fetchPrev() .fetchTime().build(client); }
protected Iterator<Size> getSizeIterator(AccumuloClient client, String tablename, Text start, Text end) throws MergeException { // open up metadata, walk through the tablets. Table.ID tableId; TabletsMetadata tablets; try { ClientContext context = (ClientContext) client; tableId = Tables.getTableId(context, tablename); tablets = TabletsMetadata.builder().scanMetadataTable() .overRange(new KeyExtent(tableId, end, start).toMetadataRange()).fetchFiles().fetchPrev() .build(context); } catch (Exception e) { throw new MergeException(e); } return tablets.stream().map(tm -> { long size = tm.getFilesMap().values().stream().mapToLong(DataFileValue::getSize).sum(); return new Size(tm.getExtent(), size); }).iterator(); }
range = new Range(startRow, lastRow); TabletsMetadata tablets = TabletsMetadata.builder().scanMetadataTable().overRange(range) .fetchLocation().fetchPrev().build(context);
protected Iterable<Pair<KeyExtent,Location>> getLocationProvider() { return () -> { try { return TabletsMetadata.builder().forTable(tableId).fetchLocation().fetchPrev() .build(context).stream().map(tm -> { Location loc = Location.NONE; if (tm.hasCurrent()) { loc = new Location(new TServerInstance(tm.getLocation())); } return new Pair<>(tm.getExtent(), loc); }).iterator(); } catch (Exception e) { throw new RuntimeException(e); } }; }