void set(Key key) { this.key = key; hashValue = hash(key.getColumnFamilyData()) + hash(key.getColumnQualifierData()); }
@Override public boolean accept(Key key, Value v) { if (columnFamilies.contains(key.getColumnFamilyData())) return true; HashSet<ByteSequence> cfset = columnsQualifiers.get(key.getColumnQualifierData()); // ensure the column qualifier goes with a paired column family, // it is possible that a column qualifier could occur with a // column family it was not paired with return cfset != null && cfset.contains(key.getColumnFamilyData()); }
public static LogEntry fromKeyValue(Key key, String value) { String qualifier = key.getColumnQualifierData().toString(); if (qualifier.indexOf('/') < 1) { throw new IllegalArgumentException("Bad key for log entry: " + key); } KeyExtent extent = new KeyExtent(key.getRow(), EMPTY_TEXT); String[] parts = qualifier.split("/", 2); String server = parts[0]; // handle old-style log entries that specify log sets parts = value.split("\\|")[0].split(";"); String filename = parts[parts.length - 1]; long timestamp = key.getTimestamp(); return new LogEntry(extent, timestamp, server, filename); }
@Override public Path getFullPath(Key key) { // TODO sanity check col fam String relPath = key.getColumnQualifierData().toString(); byte[] tableId = KeyExtent.tableOfMetadataRow(key.getRow()); return getFullPath(Table.ID.of(new String(tableId)), relPath); }
@Override public String next() { Entry<Key,Value> entry = iter.next(); StringBuilder sb = new StringBuilder(); toHex(sb, entry.getKey().getRowData().toArray()); sb.append(" "); toHex(sb, entry.getKey().getColumnFamilyData().toArray()); sb.append(" "); toHex(sb, entry.getKey().getColumnQualifierData().toArray()); sb.append(" ["); sb.append(entry.getKey().getColumnVisibilityData()); sb.append("] "); if (config.willPrintTimestamps()) { sb.append(Long.toString(entry.getKey().getTimestamp())); sb.append(" "); } toHex(sb, entry.getValue().get()); return sb.toString(); }
@VisibleForTesting public void put(Key key, Value value) { wlock.lock(); try { if (nmPointer == 0) { throw new IllegalStateException("Native Map Deleted"); } modCount++; singleUpdate(nmPointer, key.getRowData().toArray(), key.getColumnFamilyData().toArray(), key.getColumnQualifierData().toArray(), key.getColumnVisibilityData().toArray(), key.getTimestamp(), key.isDeleted(), value.get(), 0); } finally { wlock.unlock(); } }
/** * Make a new key with all parts (including delete flag) coming from {@code originalKey} but use * {@code newColFam} as the column family. */ protected Key replaceColumnFamily(Key originalKey, Text newColFam) { byte[] row = originalKey.getRowData().toArray(); byte[] cf = newColFam.getBytes(); byte[] cq = originalKey.getColumnQualifierData().toArray(); byte[] cv = originalKey.getColumnVisibilityData().toArray(); long timestamp = originalKey.getTimestamp(); Key newKey = new Key(row, 0, row.length, cf, 0, newColFam.getLength(), cq, 0, cq.length, cv, 0, cv.length, timestamp); newKey.setDeleted(originalKey.isDeleted()); return newKey; }
/** * Make a new key with all parts (including delete flag) coming from {@code originalKey} but use * {@code newColVis} as the column visibility. */ protected Key replaceColumnVisibility(Key originalKey, Text newColVis) { byte[] row = originalKey.getRowData().toArray(); byte[] cf = originalKey.getColumnFamilyData().toArray(); byte[] cq = originalKey.getColumnQualifierData().toArray(); byte[] cv = newColVis.getBytes(); long timestamp = originalKey.getTimestamp(); Key newKey = new Key(row, 0, row.length, cf, 0, cf.length, cq, 0, cq.length, cv, 0, newColVis.getLength(), timestamp); newKey.setDeleted(originalKey.isDeleted()); return newKey; }
private boolean isSuppressionMarker(Key key, Value val) { return key.getColumnFamilyData().length() == 0 && key.getColumnQualifierData().length() == 0 && key.getColumnVisibilityData().length() == 0 && val.equals(SUPPRESS_ROW_VALUE); }
private boolean isDeleteMarker(Key key, Value val) { return key.getColumnFamilyData().length() == 0 && key.getColumnQualifierData().length() == 0 && key.getColumnVisibilityData().length() == 0 && val.equals(DELETE_ROW_VALUE); }
NMIterator(Key key) { if (nmPointer == 0) { throw new IllegalStateException(); } expectedModCount = modCount; nmiPointer = createNMI(nmPointer, key.getRowData().toArray(), key.getColumnFamilyData().toArray(), key.getColumnQualifierData().toArray(), key.getColumnVisibilityData().toArray(), key.getTimestamp(), key.isDeleted(), fieldsLens); hasNext = nmiPointer != 0; }
@Override public boolean accept(Key k, Value v) { return match(v.get()) || match(k.getRowData()) || match(k.getColumnFamilyData()) || match(k.getColumnQualifierData()); }
@Override public boolean accept(Key key, Value value) { if (orFields) return ((matches(rowMatcher, rowMatcher == null ? null : key.getRowData())) || (matches(colfMatcher, colfMatcher == null ? null : key.getColumnFamilyData())) || (matches(colqMatcher, colqMatcher == null ? null : key.getColumnQualifierData())) || (matches(valueMatcher, value.get(), 0, value.get().length))); return ((matches(rowMatcher, rowMatcher == null ? null : key.getRowData())) && (matches(colfMatcher, colfMatcher == null ? null : key.getColumnFamilyData())) && (matches(colqMatcher, colqMatcher == null ? null : key.getColumnQualifierData())) && (matches(valueMatcher, value.get(), 0, value.get().length))); }
@Override protected void hash(DataOutput hasher, Key k) throws IOException { if (row) { putByteSquence(k.getRowData(), hasher); } if (family) { putByteSquence(k.getColumnFamilyData(), hasher); } if (qualifier) { putByteSquence(k.getColumnQualifierData(), hasher); } if (visibility) { putByteSquence(k.getColumnVisibilityData(), hasher); } } }
@Override public org.apache.hadoop.util.bloom.Key transform(org.apache.accumulo.core.data.Key acuKey) { byte keyData[]; ByteSequence row = acuKey.getRowData(); ByteSequence cf = acuKey.getColumnFamilyData(); ByteSequence cq = acuKey.getColumnQualifierData(); keyData = new byte[row.length() + cf.length() + cq.length()]; System.arraycopy(row.getBackingArray(), row.offset(), keyData, 0, row.length()); System.arraycopy(cf.getBackingArray(), cf.offset(), keyData, row.length(), cf.length()); System.arraycopy(cq.getBackingArray(), cq.offset(), keyData, row.length() + cf.length(), cq.length()); return new org.apache.hadoop.util.bloom.Key(keyData, 1.0); }
} else if (prev.getColumnQualifierData().compareTo(current.getColumnQualifierData()) < 0) { ByteSequence shortenedQual = shorten(prev.getColumnQualifierData(), current.getColumnQualifierData()); if (shortenedQual == null) { return prev;
public float getProgress(Key currentKey) { if (currentKey == null) return 0f; if (range.contains(currentKey)) { if (range.getStartKey() != null && range.getEndKey() != null) { if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW) != 0) { // just look at the row progress return getProgress(range.getStartKey().getRowData(), range.getEndKey().getRowData(), currentKey.getRowData()); } else if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW_COLFAM) != 0) { // just look at the column family progress return getProgress(range.getStartKey().getColumnFamilyData(), range.getEndKey().getColumnFamilyData(), currentKey.getColumnFamilyData()); } else if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW_COLFAM_COLQUAL) != 0) { // just look at the column qualifier progress return getProgress(range.getStartKey().getColumnQualifierData(), range.getEndKey().getColumnQualifierData(), currentKey.getColumnQualifierData()); } } } // if we can't figure it out, then claim no progress return 0f; }
@Override public void accept(Key k, Value v) { keyStats.accept(k.getLength()); rowStats.accept(k.getRowData().length()); familyStats.accept(k.getColumnFamilyData().length()); qualifierStats.accept(k.getColumnQualifierData().length()); visibilityStats.accept(k.getColumnVisibilityData().length()); valueStats.accept(v.getSize()); total++; }
@Override public void seek(Range range, Collection<ByteSequence> columnFamilies, boolean inclusive) throws IOException { topKey = null; topValue = null; Key sk = range.getStartKey(); if (sk != null && sk.getColumnQualifierData().length() == 0 && sk.getColumnVisibilityData().length() == 0 && sk.getTimestamp() == Long.MAX_VALUE && !range.isStartKeyInclusive()) { // assuming that we are seeking using a key previously returned by // this iterator // therefore go to the next row/cf Key followingRowKey = sk.followingKey(PartialKey.ROW_COLFAM); if (range.getEndKey() != null && followingRowKey.compareTo(range.getEndKey()) > 0) return; range = new Range(sk.followingKey(PartialKey.ROW_COLFAM), true, range.getEndKey(), range.isEndKeyInclusive()); } sourceIter.seek(range, columnFamilies, inclusive); prepKeys(); }
@Override public void seek(Range range, Collection<ByteSequence> columnFamilies, boolean inclusive) throws IOException { topKey = null; topValue = null; Key sk = range.getStartKey(); if (sk != null && sk.getColumnFamilyData().length() == 0 && sk.getColumnQualifierData().length() == 0 && sk.getColumnVisibilityData().length() == 0 && sk.getTimestamp() == Long.MAX_VALUE && !range.isStartKeyInclusive()) { // assuming that we are seeking using a key previously returned by this iterator // therefore go to the next row Key followingRowKey = sk.followingKey(PartialKey.ROW); if (range.getEndKey() != null && followingRowKey.compareTo(range.getEndKey()) > 0) return; range = new Range(sk.followingKey(PartialKey.ROW), true, range.getEndKey(), range.isEndKeyInclusive()); } sourceIter.seek(range, columnFamilies, inclusive); prepKeys(); }