private static Mutation createCloneMutation(Table.ID srcTableId, Table.ID tableId, Map<Key,Value> tablet) { KeyExtent ke = new KeyExtent(tablet.keySet().iterator().next().getRow(), (Text) null); Mutation m = new Mutation(TabletsSection.getRow(tableId, ke.getEndRow())); for (Entry<Key,Value> entry : tablet.entrySet()) { if (entry.getKey().getColumnFamily().equals(DataFileColumnFamily.NAME)) { String cf = entry.getKey().getColumnQualifier().toString(); if (!cf.startsWith("../") && !cf.contains(":")) cf = "../" + srcTableId + entry.getKey().getColumnQualifier(); m.put(entry.getKey().getColumnFamily(), new Text(cf), entry.getValue()); } else if (entry.getKey().getColumnFamily() .equals(TabletsSection.CurrentLocationColumnFamily.NAME)) { m.put(TabletsSection.LastLocationColumnFamily.NAME, entry.getKey().getColumnQualifier(), entry.getValue()); } else if (entry.getKey().getColumnFamily() .equals(TabletsSection.LastLocationColumnFamily.NAME)) { // skip } else { m.put(entry.getKey().getColumnFamily(), entry.getKey().getColumnQualifier(), entry.getValue()); } } return m; }
private static void createEntriesForTablet(TreeMap<Key,Value> map, Tablet tablet) { Value EMPTY_SIZE = new DataFileValue(0, 0).encodeAsValue(); Text extent = new Text(TabletsSection.getRow(tablet.tableId, tablet.endRow)); addEntry(map, extent, DIRECTORY_COLUMN, new Value(tablet.dir.getBytes(UTF_8))); addEntry(map, extent, TIME_COLUMN, new Value((TabletTime.LOGICAL_TIME_ID + "0").getBytes(UTF_8))); addEntry(map, extent, PREV_ROW_COLUMN, KeyExtent.encodePrevEndRow(tablet.prevEndRow)); for (String file : tablet.files) { addEntry(map, extent, new ColumnFQ(DataFileColumnFamily.NAME, new Text(file)), EMPTY_SIZE); } }
Text row = MetadataSchema.TabletsSection.getRow(tableId, null); Mutation m = new Mutation(row); m.put(logEntry.getColumnFamily(), logEntry.getColumnQualifier(), logEntry.getValue());
Text row = MetadataSchema.TabletsSection.getRow(tableId, null); Mutation m = new Mutation(row); m.put(logEntry.getColumnFamily(), logEntry.getColumnQualifier(), logEntry.getValue());
public static Text getMetadataEntry(Text tableId, Text endRow) { return MetadataSchema.TabletsSection.getRow(tableId.toString(), endRow); }
public static Text getMetadataEntry(String tableId, Text endRow) { return MetadataSchema.TabletsSection.getRow(tableId, endRow); }
Text first = TabletsSection.getRow(tableId, start); Range range = new Range(first, false, null, true); scanner.setRange(range.clip(MetadataSchema.TabletsSection.getRange()));
start = new Text(); Range scanRange = new Range(TabletsSection.getRow(range.getTableId(), start), false, stopRow, false); String targetSystemTable = MetadataTable.NAME;
startRow = new Text(); nextRange = new Range(TabletsSection.getRow(tableId, startRow), true, null, false); } else {
Key prevRowKey = new Key(new Text(TabletsSection.getRow(tableId, metadataPrevEndRow)));
/** * During an upgrade from 1.6 to 1.7, we need to add the replication table */ public static void createReplicationTable(ServerContext context) { VolumeChooserEnvironment chooserEnv = new VolumeChooserEnvironment(ReplicationTable.ID, context); String dir = context.getVolumeManager().choose(chooserEnv, ServerConstants.getBaseUris(context)) + Constants.HDFS_TABLES_DIR + Path.SEPARATOR + ReplicationTable.ID + Constants.DEFAULT_TABLET_LOCATION; Mutation m = new Mutation(new Text(TabletsSection.getRow(ReplicationTable.ID, null))); m.put(DIRECTORY_COLUMN.getColumnFamily(), DIRECTORY_COLUMN.getColumnQualifier(), 0, new Value(dir.getBytes(UTF_8))); m.put(TIME_COLUMN.getColumnFamily(), TIME_COLUMN.getColumnQualifier(), 0, new Value((TabletTime.LOGICAL_TIME_ID + "0").getBytes(UTF_8))); m.put(PREV_ROW_COLUMN.getColumnFamily(), PREV_ROW_COLUMN.getColumnQualifier(), 0, KeyExtent.encodePrevEndRow(null)); update(context, getMetadataTable(context), null, m); }
private void resetSource() { if (prevTablet == null) { source = iteratorFactory.apply(range); } else { // get the metadata table row for the previous tablet Text prevMetaRow = TabletsSection.getRow(prevTablet.getTableId(), prevTablet.getEndRow()); // ensure the previous tablet still exists in the metadata table if (Iterators.size(iteratorFactory.apply(new Range(prevMetaRow))) == 0) { throw new TabletDeletedException("Tablet " + prevMetaRow + " was deleted while iterating"); } // start scanning at next possible row in metadata table Range seekRange = new Range(new Key(prevMetaRow).followingKey(PartialKey.ROW), true, range.getEndKey(), range.isEndKeyInclusive()); log.info("Resetting scanner to {}", seekRange); source = iteratorFactory.apply(seekRange); } }
public static Text getMetadataEntry(KeyExtent extent) { return TabletsSection.getRow(extent.getTableId(), extent.getEndRow()); }
public Range toMetadataRange() { Text metadataPrevRow = TabletsSection.getRow(getTableId(), getPrevEndRow() == null ? EMPTY_TEXT : getPrevEndRow()); return new Range(metadataPrevRow, getPrevEndRow() == null, getMetadataEntry(), true); }
/** * Returns a String representing this extent's entry in the Metadata table * */ public Text getMetadataEntry() { return TabletsSection.getRow(getTableId(), getEndRow()); }