/** {@inheritDoc} */ @Override public HBaseColumnName getHBaseColumnName(FijiColumnName fijiColumnName) throws NoSuchColumnException { return mColumnNameTranslator.toHBaseColumnName(fijiColumnName); }
/** {@inheritDoc} */ @Override public HBaseColumnName getHBaseColumnName( final FijiColumnName fijiColumnName ) throws NoSuchColumnException { return mTranslator.toHBaseColumnName(fijiColumnName); } }
/** * Get the meta table key for the given column name and annotation key. This method is package * private for testing. * * @param table HBaseFijiTable in which the specified column lives. This will be used for * column name translation. * @param columnName the name of the column from which to get the meta table key. * @param key the annotation key from which to get the meta table key. * @return the meta table key for the given column name and annotation key. * @throws NoSuchColumnException in case the column does not exist in the table. */ static String getMetaTableKey( final HBaseFijiTable table, final FijiColumnName columnName, final String key ) throws NoSuchColumnException { final HBaseColumnNameTranslator translator = table.getColumnNameTranslator(); Preconditions.checkArgument(isValidAnnotationKey(key), "Annotation key: %s does not conform to " + "required pattern: %s", key, ALLOWED_ANNOTATION_KEY_PATTERN); return String.format("%s%s.%s", METATABLE_KEY_PREFIX, translator.toHBaseColumnName(columnName), key); }
/** {@inheritDoc} */ @Override public void deleteColumn(EntityId entityId, String family, String qualifier, long upToTimestamp) throws IOException { final State state = mState.get(); Preconditions.checkState(state == State.OPEN, "Cannot delete column while FijiTableWriter %s is in state %s.", this, state); final HBaseColumnName hbaseColumnName = mWriterLayoutCapsule.getColumnNameTranslator() .toHBaseColumnName(FijiColumnName.create(family, qualifier)); final Delete delete = new Delete(entityId.getHBaseRowKey()) .deleteColumns(hbaseColumnName.getFamily(), hbaseColumnName.getQualifier(), upToTimestamp); mHTable.delete(delete); }
/** {@inheritDoc} */ @Override public void deleteCell(EntityId entityId, String family, String qualifier, long timestamp) throws IOException { final State state = mState.get(); Preconditions.checkState(state == State.OPEN, "Cannot delete cell while FijiTableWriter %s is in state %s.", this, state); final HBaseColumnName hbaseColumnName = mWriterLayoutCapsule.getColumnNameTranslator() .toHBaseColumnName(FijiColumnName.create(family, qualifier)); final Delete delete = new Delete(entityId.getHBaseRowKey()) .deleteColumn(hbaseColumnName.getFamily(), hbaseColumnName.getQualifier(), timestamp); mHTable.delete(delete); }
/** {@inheritDoc} */ @Override public <T> void put(String family, String qualifier, long timestamp, T value) throws IOException { Preconditions.checkState(mPut != null, "calls to put() must be between calls to begin() and " + "commit(), checkAndCommit(), or rollback()"); final State state = mState.get(); Preconditions.checkState(state == State.OPEN, "Cannot put cell to an AtomicFijiPutter instance in state %s.", state); final WriterLayoutCapsule capsule = getWriterLayoutCapsule(); final FijiColumnName fijiColumnName = FijiColumnName.create(family, qualifier); final HBaseColumnName columnName = capsule.getColumnNameTranslator().toHBaseColumnName(fijiColumnName); final FijiCellEncoder cellEncoder = capsule.getCellEncoderProvider().getEncoder(family, qualifier); final byte[] encoded = cellEncoder.encode(value); mHopper.add(new KeyValue( mId, columnName.getFamily(), columnName.getQualifier(), timestamp, encoded)); }
/** {@inheritDoc} */ @Override public <T> void put(EntityId entityId, String family, String qualifier, long timestamp, T value) throws IOException { final State state = mState.get(); Preconditions.checkState(state == State.OPEN, "Cannot put cell to FijiTableWriter instance %s in state %s.", this, state); final FijiColumnName columnName = FijiColumnName.create(family, qualifier); final WriterLayoutCapsule capsule = mWriterLayoutCapsule; final HBaseColumnName hbaseColumnName = capsule.getColumnNameTranslator().toHBaseColumnName(columnName); final FijiCellEncoder cellEncoder = capsule.getCellEncoderProvider().getEncoder(family, qualifier); final byte[] encoded = cellEncoder.encode(value); final Put put = new Put(entityId.getHBaseRowKey()) .add(hbaseColumnName.getFamily(), hbaseColumnName.getQualifier(), timestamp, encoded); mHTable.put(put); }
/** {@inheritDoc} */ @Override public void deleteCell(EntityId entityId, String family, String qualifier, long timestamp) throws IOException { final HBaseColumnName hbaseColumnName = mTable.getColumnNameTranslator() .toHBaseColumnName(FijiColumnName.create(family, qualifier)); final Delete delete = new Delete(entityId.getHBaseRowKey()) .deleteColumn(hbaseColumnName.getFamily(), hbaseColumnName.getQualifier(), timestamp); updateBuffer(delete); }
/** {@inheritDoc} */ @Override public void deleteColumn(EntityId entityId, String family, String qualifier, long upToTimestamp) throws IOException { final HBaseColumnName hbaseColumnName = mWriterLayoutCapsule.getColumnNameTranslator() .toHBaseColumnName(FijiColumnName.create(family, qualifier)); final Delete delete = new Delete(entityId.getHBaseRowKey()) .deleteColumns(hbaseColumnName.getFamily(), hbaseColumnName.getQualifier(), upToTimestamp); updateBuffer(delete); }
final FijiColumnName column = FijiColumnName.create(familyName, qualifier); final HBaseColumnName hbaseColumnName = mWriterLayoutCapsule.getColumnNameTranslator().toHBaseColumnName(column); delete.deleteColumns( hbaseColumnName.getFamily(), hbaseColumnName.getQualifier(), upToTimestamp);
/** * Find the start index of the configured column in the KeyValues of this Iterator. * * @return the start index of the configured column in the KeyValues of this Iterator. * @throws NoSuchColumnException in case the column does not exist in the table. */ private int findStartIndex() throws NoSuchColumnException { final HBaseColumnName hBaseColumnName = mColumnNameTranslator.toHBaseColumnName(mColumn); final KeyValue kv = new KeyValue( mEntityId.getHBaseRowKey(), hBaseColumnName.getFamily(), hBaseColumnName.getQualifier(), Long.MAX_VALUE, new byte[0]); return findInsertionPoint(mKeyValues, kv); }
.toHBaseColumnName(FijiColumnName.create(family)); final Delete delete = new Delete(entityId.getHBaseRowKey()); delete.deleteFamily(hbaseColumnName.getFamily(), upToTimestamp);
/** {@inheritDoc} */ @Override public void deleteColumn(EntityId entityId, String family, String qualifier, long upToTimestamp) throws IOException { final FijiColumnName fijiColumn = new FijiColumnName(family, qualifier); final HBaseColumnName hbaseColumn = mColumnNameTranslator.toHBaseColumnName(fijiColumn); final HFileKeyValue mrKey = new HFileKeyValue( entityId.getHBaseRowKey(), hbaseColumn.getFamily(), hbaseColumn.getQualifier(), upToTimestamp, HFileKeyValue.Type.DeleteColumn, HConstants.EMPTY_BYTE_ARRAY); write(mrKey); }
/** {@inheritDoc} */ @Override public void deleteCell(EntityId entityId, String family, String qualifier, long timestamp) throws IOException { final FijiColumnName fijiColumn = new FijiColumnName(family, qualifier); final HBaseColumnName hbaseColumn = mColumnNameTranslator.toHBaseColumnName(fijiColumn); final HFileKeyValue mrKey = new HFileKeyValue( entityId.getHBaseRowKey(), hbaseColumn.getFamily(), hbaseColumn.getQualifier(), timestamp, HFileKeyValue.Type.DeleteCell, HConstants.EMPTY_BYTE_ARRAY); write(mrKey); }
/** * Deletes all cells from a group-type family with a timestamp less than or equal to a * specified timestamp. * * @param entityId The entity (row) to delete from. * @param familyLayout The family layout. * @param upToTimestamp A timestamp. * @throws IOException If there is an IO error. */ private void deleteGroupFamily( EntityId entityId, FamilyLayout familyLayout, long upToTimestamp) throws IOException { final String familyName = Preconditions.checkNotNull(familyLayout.getName()); // Delete each column in the group according to the layout. final Delete delete = new Delete(entityId.getHBaseRowKey()); for (ColumnLayout columnLayout : familyLayout.getColumnMap().values()) { final String qualifier = columnLayout.getName(); final FijiColumnName column = FijiColumnName.create(familyName, qualifier); final HBaseColumnName hbaseColumnName = mWriterLayoutCapsule.getColumnNameTranslator().toHBaseColumnName(column); delete.deleteColumns( hbaseColumnName.getFamily(), hbaseColumnName.getQualifier(), upToTimestamp); } // Buffer the delete. updateBuffer(delete); }
toHBaseColumnName(FijiColumnName.create(family, qualifier));
/** {@inheritDoc} */ @Override public void deleteFamily(EntityId entityId, String family, long upToTimestamp) throws IOException { final HBaseFijiTableWriter.WriterLayoutCapsule capsule = mWriterLayoutCapsule; final FamilyLayout familyLayout = capsule.getLayout().getFamilyMap().get(family); if (null == familyLayout) { throw new NoSuchColumnException(String.format("Family '%s' not found.", family)); } if (familyLayout.getLocalityGroup().getFamilyMap().size() > 1) { // There are multiple families within the locality group, so we need to be clever. if (familyLayout.isGroupType()) { deleteGroupFamily(entityId, familyLayout, upToTimestamp); } else if (familyLayout.isMapType()) { deleteMapFamily(entityId, familyLayout, upToTimestamp); } else { throw new RuntimeException("Internal error: family is neither map-type nor group-type."); } return; } // The only data in this HBase family is the one Fiji family, so we can delete everything. final HBaseColumnName hbaseColumnName = capsule.getColumnNameTranslator() .toHBaseColumnName(FijiColumnName.create(family)); final Delete delete = new Delete(entityId.getHBaseRowKey()); delete.deleteFamily(hbaseColumnName.getFamily(), upToTimestamp); // Buffer the delete. updateBuffer(delete); }
/** {@inheritDoc} */ @Override public <T> void put(EntityId entityId, String family, String qualifier, long timestamp, T value) throws IOException { final FijiColumnName columnName = FijiColumnName.create(family, qualifier); final HBaseFijiTableWriter.WriterLayoutCapsule capsule = mWriterLayoutCapsule; final HBaseColumnName hbaseColumnName = capsule.getColumnNameTranslator().toHBaseColumnName(columnName); final FijiCellEncoder cellEncoder = capsule.getCellEncoderProvider().getEncoder(family, qualifier); final byte[] encoded = cellEncoder.encode(value); updateBuffer(entityId, hbaseColumnName.getFamily(), hbaseColumnName.getQualifier(), timestamp, encoded); }
final FijiColumnName fijiColumnName = FijiColumnName.create(family, qualifier); final HBaseColumnName columnName = capsule.getColumnNameTranslator().toHBaseColumnName(fijiColumnName); final byte[] encoded;
/** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public <T> void put(EntityId entityId, String family, String qualifier, long timestamp, T value) throws IOException { final FijiColumnName fijiColumn = new FijiColumnName(family, qualifier); final HBaseColumnName hbaseColumn = mColumnNameTranslator.toHBaseColumnName(fijiColumn); final CellSpec cellSpec = mTable.getLayout().getCellSpec(fijiColumn) .setSchemaTable(mFiji.getSchemaTable()); final FijiCellEncoder encoder = DefaultFijiCellEncoderFactory.get().create(cellSpec); final HFileKeyValue mrKey = new HFileKeyValue( entityId.getHBaseRowKey(), hbaseColumn.getFamily(), hbaseColumn.getQualifier(), timestamp, encoder.encode(value)); write(mrKey); }