org.apache.hadoop.hbase.client.Increment类的使用及代码示例

x33g5p2x  于2022-01-21 转载在 其他  
字(16.2k)|赞(0)|评价(0)|浏览(144)

本文整理了Java中org.apache.hadoop.hbase.client.Increment类的一些代码示例,展示了Increment类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Increment类的具体详情如下:
包路径:org.apache.hadoop.hbase.client.Increment
类名称:Increment

Increment介绍

[英]Used to perform Increment operations on a single row.

This operation ensures atomicity to readers. Increments are done under a single row lock, so write operations to a row are synchronized, and readers are guaranteed to see this operation fully completed.

To increment columns of a row, instantiate an Increment object with the row to increment. At least one column to increment must be specified using the #addColumn(byte[],byte[],long) method.
[中]用于对单行执行增量操作。
此操作确保了读卡器的原子性。增量是在单行锁下完成的,因此对行的写入操作是同步的,并且保证读卡器看到此操作完全完成。
若要增加行的列,请使用要增加的行实例化一个增量对象。必须使用#addColumn(byte[],byte[],long)方法指定至少一个要递增的列。

代码示例

代码示例来源:origin: apache/hbase

@Test
public void testIncrementOnSameColumn() throws Exception {
 LOG.info("Starting " + this.name.getMethodName());
 final byte[] TABLENAME = Bytes.toBytes(filterStringSoTableNameSafe(this.name.getMethodName()));
 Table ht = TEST_UTIL.createTable(TableName.valueOf(TABLENAME), FAMILY);
   new byte[][] { Bytes.toBytes("A"), Bytes.toBytes("B"), Bytes.toBytes("C") };
 Increment inc = new Increment(ROW);
 for (int i = 0; i < QUALIFIERS.length; i++) {
  inc.addColumn(FAMILY, QUALIFIERS[i], 1);
  inc.addColumn(FAMILY, QUALIFIERS[i], 1);
 ht.increment(inc);
 inc = new Increment(ROW);
 for (int i = 0; i < QUALIFIERS.length; i++) {
  inc.addColumn(FAMILY, QUALIFIERS[i], 1);
  inc.addColumn(FAMILY, QUALIFIERS[i], 1);
 ht.increment(inc);
 r = ht.get(get);
 kvs = r.rawCells();
 assertEquals(3, kvs.length);
 assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 2);

代码示例来源:origin: apache/hbase

public static TIncrement incrementFromHBase(Increment in) throws IOException {
 TIncrement out = new TIncrement();
 out.setRow(in.getRow());
 if (in.getDurability() != Durability.USE_DEFAULT) {
  out.setDurability(durabilityFromHBase(in.getDurability()));
 for (Map.Entry<byte [], List<Cell>> entry : in.getFamilyCellMap().entrySet()) {
  byte[] family = entry.getKey();
  for (Cell cell : entry.getValue()) {
   columnValue.setFamily(family).setQualifier(CellUtil.cloneQualifier(cell));
   columnValue.setAmount(
     Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));
   out.addToColumns(columnValue);
 for (Map.Entry<String, byte[]> attribute : in.getAttributesMap().entrySet()) {
  out.putToAttributes(ByteBuffer.wrap(Bytes.toBytes(attribute.getKey())),
    ByteBuffer.wrap(attribute.getValue()));
  CellVisibility cellVisibility = in.getCellVisibility();
  if (cellVisibility != null) {
   TCellVisibility tCellVisibility = new TCellVisibility();
  throw new RuntimeException(e);
 out.setReturnResults(in.isReturnResults());
 return out;

代码示例来源:origin: apache/hbase

@Test
 public void testIncrementInstance() {
  final long expected = 13;
  Increment inc = new Increment(new byte [] {'r'});
  int total = 0;
  for (int i = 0; i < 2; i++) {
   byte [] bytes = Bytes.toBytes(i);
   inc.addColumn(bytes, bytes, expected);
   total++;
  }
  Map<byte[], NavigableMap<byte [], Long>> familyMapOfLongs = inc.getFamilyMapOfLongs();
  int found = 0;
  for (Map.Entry<byte [], NavigableMap<byte [], Long>> entry: familyMapOfLongs.entrySet()) {
   for (Map.Entry<byte [], Long> e: entry.getValue().entrySet()) {
    assertEquals(expected, e.getValue().longValue());
    found++;
   }
  }
  assertEquals(total, found);
 }
}

代码示例来源:origin: apache/hbase

private Increment newIncrementWithSkipWAL() {
 Increment increment = new Increment(Bytes.toBytes("row"));
 increment.addColumn(CF, CQ, 1);
 increment.setDurability(Durability.SKIP_WAL);
 return increment;
}

代码示例来源:origin: apache/hbase

@Override
 protected void execute(Table table) throws IOException {
  table.increment(new Increment(FAM_NAM).addColumn(FAM_NAM, FAM_NAM, 1));
 }
}

代码示例来源:origin: apache/hbase

/**
 * Atomically increments a column value. If the column value already exists
 * and is not a big-endian long, this could throw an exception. If the column
 * value does not yet exist it is initialized to <code>amount</code> and
 * written to the specified column.
 *
 * <p>Setting durability to {@link Durability#SKIP_WAL} means that in a fail
 * scenario you will lose any increments that have not been flushed.
 * @param row The row that contains the cell to increment.
 * @param family The column family of the cell to increment.
 * @param qualifier The column qualifier of the cell to increment.
 * @param amount The amount to increment the cell with (or decrement, if the
 * amount is negative).
 * @param durability The persistence guarantee for this increment.
 * @return The new value, post increment.
 * @throws IOException if a remote or network exception occurs.
 */
default long incrementColumnValue(byte[] row, byte[] family, byte[] qualifier,
 long amount, Durability durability) throws IOException {
 Increment increment = new Increment(row)
   .addColumn(family, qualifier, amount)
   .setDurability(durability);
 Cell cell = increment(increment).getColumnLatestCell(family, qualifier);
 return Bytes.toLong(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());
}

代码示例来源:origin: cdapio/cdap

boolean isIncrement = increment.getAttribute(HBaseTable.DELTA_WRITE) != null;
boolean transactional = state.containsTransactionalFamily(increment.getFamilyCellMap().keySet());
if (!isIncrement || !transactional) {
 return null;
byte[] txBytes = increment.getAttribute(TxConstants.TX_OPERATION_ATTRIBUTE_KEY);
if (txBytes == null) {
 throw new IllegalArgumentException("Attribute " + TxConstants.TX_OPERATION_ATTRIBUTE_KEY
                    + " must be set for transactional readless increments");
byte[] wpBytes = increment.getAttribute(HBaseTable.WRITE_POINTER);
if (wpBytes == null) {
 throw new IllegalArgumentException("Attribute " + HBaseTable.WRITE_POINTER
                    + " must be set for transactional readless increments");
long writeVersion = Bytes.toLong(wpBytes);
Get get = new Get(increment.getRow());
get.setAttribute(TxConstants.TX_OPERATION_ATTRIBUTE_KEY, txBytes);
for (Map.Entry<byte[], NavigableMap<byte[], Long>> entry : increment.getFamilyMapOfLongs().entrySet()) {
 byte[] family = entry.getKey();
 for (byte[] column : entry.getValue().keySet()) {
  get.addColumn(family, column);
Put put = new Put(increment.getRow());
put.setAttribute(HBaseTable.TX_MAX_LIFETIME_MILLIS_KEY,
         increment.getAttribute(HBaseTable.TX_MAX_LIFETIME_MILLIS_KEY));
put.setAttribute(HBaseTable.TX_ID, increment.getAttribute(HBaseTable.TX_ID));
for (Map.Entry<byte[], NavigableMap<byte[], Long>> entry : increment.getFamilyMapOfLongs().entrySet()) {
 byte[] family = entry.getKey();

代码示例来源:origin: apache/hbase

@Test
public void testLabelsWithIncrement() throws Throwable {
 TableName tableName = TableName.valueOf(TEST_NAME.getMethodName());
 try (Table table = TEST_UTIL.createTable(tableName, fam)) {
  byte[] row1 = Bytes.toBytes("row1");
  byte[] val = Bytes.toBytes(1L);
  Put put = new Put(row1);
  put.addColumn(fam, qual, HConstants.LATEST_TIMESTAMP, val);
  put.setCellVisibility(new CellVisibility(SECRET + " & " + CONFIDENTIAL));
  table.put(put);
  Get get = new Get(row1);
  get.setAuthorizations(new Authorizations(SECRET));
  Result result = table.get(get);
  assertTrue(result.isEmpty());
  table.incrementColumnValue(row1, fam, qual, 2L);
  result = table.get(get);
  assertTrue(result.isEmpty());
  Increment increment = new Increment(row1);
  increment.addColumn(fam, qual, 2L);
  increment.setCellVisibility(new CellVisibility(SECRET));
  table.increment(increment);
  result = table.get(get);
  assertTrue(!result.isEmpty());
 }
}

代码示例来源:origin: apache/hbase

AsyncTable<?> table = tableGetter.apply(TABLE_NAME);
table.putAll(IntStream.range(0, 7)
  .mapToObj(i -> new Put(Bytes.toBytes(i)).addColumn(FAMILY, CQ, Bytes.toBytes((long) i)))
  .collect(Collectors.toList())).get();
List<Row> actions = new ArrayList<>();
actions.add(new Get(Bytes.toBytes(0)));
actions.add(new Put(Bytes.toBytes(1)).addColumn(FAMILY, CQ, Bytes.toBytes(2L)));
actions.add(new Delete(Bytes.toBytes(2)));
actions.add(new Increment(Bytes.toBytes(3)).addColumn(FAMILY, CQ, 1));
actions.add(new Append(Bytes.toBytes(4)).addColumn(FAMILY, CQ, Bytes.toBytes(4)));
RowMutations rm = new RowMutations(Bytes.toBytes(5));
rm.add(new Put(Bytes.toBytes(5)).addColumn(FAMILY, CQ1, Bytes.toBytes(200L)));
actions.add(rm);
actions.add(new Get(Bytes.toBytes(6)));
assertEquals(0, Bytes.toLong(getResult.getValue(FAMILY, CQ)));
assertEquals(2, Bytes.toLong(table.get(new Get(Bytes.toBytes(1))).get().getValue(FAMILY, CQ)));
assertTrue(table.get(new Get(Bytes.toBytes(2))).get().isEmpty());
Result incrementResult = (Result) results.get(3);
assertEquals(4, Bytes.toLong(incrementResult.getValue(FAMILY, CQ)));

代码示例来源:origin: apache/hbase

@Test
public void testNullQualifier() throws Exception {
 final TableName tableName = TableName.valueOf(name.getMethodName());
 Table table = TEST_UTIL.createTable(tableName, FAMILY);
 Put put = new Put(ROW);
 put.addColumn(FAMILY, null, VALUE);
 table.put(put);
 table.delete(delete);
 Get get = new Get(ROW);
 Result result = table.get(get);
 assertEmptyResult(result);
 Increment increment = new Increment(ROW);
 increment.addColumn(FAMILY, null, 1L);
 table.increment(increment);
 getTestNull(table, ROW, FAMILY, 1L);
 put = new Put(ROW);
 put.addColumn(FAMILY, null, Bytes.toBytes("checkAndPut"));
 table.put(put);
 table.checkAndMutate(ROW, FAMILY).ifEquals(VALUE).thenPut(put);
 mutate.add(new Put(ROW).addColumn(FAMILY, null, Bytes.toBytes("checkAndMutate")));
 table.checkAndMutate(ROW, FAMILY).ifEquals(Bytes.toBytes("checkAndPut")).thenMutate(mutate);

代码示例来源:origin: apache/hbase

@Test
public void testMutation() throws Exception {
 Increment inc = new Increment(ROW);
 inc.addColumn(FAMILY, QUALIFIER, 10L);
 table.increment(inc);
 value = Bytes.toBytes(20L);
 assertResult(table.get(new Get(ROW)), value, value);
 assertObserverHasExecuted();
  .put(APPEND_VALUE)
  .array();
 assertResult(table.get(new Get(ROW)), value, value);
 assertObserverHasExecuted();
 delete.addColumns(FAMILY, QUALIFIER);
 table.delete(delete);
 assertTrue(Arrays.asList(table.get(new Get(ROW)).rawCells()).toString(),
  table.get(new Get(ROW)).isEmpty());
 assertObserverHasExecuted();
 assertObserverHasExecuted();
 assertTrue(table.get(new Get(ROW)).isEmpty());

代码示例来源:origin: apache/hbase

@Test
public void testNonceCollision() throws Exception {
 LOG.info("test=testNonceCollision");
 final Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());
 Table table = connection.getTable(TEST_TABLE);
 Put put = new Put(ONE_ROW);
 put.addColumn(BYTES_FAMILY, QUALIFIER, Bytes.toBytes(0L));
  Increment inc = new Increment(ONE_ROW);
  inc.addColumn(BYTES_FAMILY, QUALIFIER, 1L);
  table.increment(inc);
  inc = new Increment(ONE_ROW);
  inc.addColumn(BYTES_FAMILY, QUALIFIER, 1L);
  Result result = table.increment(inc);
  validateResult(result, QUALIFIER, Bytes.toBytes(1L));
  Get get = new Get(ONE_ROW);
  get.addColumn(BYTES_FAMILY, QUALIFIER);
  result = table.get(get);
  validateResult(result, QUALIFIER, Bytes.toBytes(1L));

代码示例来源:origin: apache/hbase

@Test
public void testIncrement() throws IOException {
 try (Table t = TEST_UTIL.getConnection().getTable(TABLE_NAME)) {
  Put put = new Put(ROW);
  put.addColumn(FAMILY, QUAL, VALUE);
  t.put(put);
  assertRowAndValue(t.get(new Get(ROW)), ROW, VALUE);
  Increment inc = new Increment(ROW);
  inc.addColumn(FAMILY, QUAL, 99);
  assertRowAndValue(t.increment(inc), ROW, FIXED_VALUE);
  assertRowAndValue(t.get(new Get(ROW)), ROW, Bytes.toBytes(199L));
 }
}

代码示例来源:origin: apache/hbase

((FakeRSRpcServices)badRS.getRSRpcServices()).setExceptionInjector(
  new RoundRobinExceptionInjector());
Configuration conf = new Configuration(TEST_UTIL.getConfiguration());
conf.set("hbase.client.retries.number", "1");
ConnectionImplementation conn =
try {
 Table table = conn.getTable(TABLE_NAME);
 byte[] row = Bytes.toBytes("row1");
 Put put = new Put(row);
 put.addColumn(FAMILY, QUALIFIER, Bytes.toBytes(10));
 Get get = new Get(row);
 Append append = new Append(row);
 append.addColumn(FAMILY, QUALIFIER, Bytes.toBytes(11));
 Increment increment = new Increment(row);
 increment.addColumn(FAMILY, QUALIFIER, 10);
 Delete delete = new Delete(row);
 delete.addColumn(FAMILY, QUALIFIER);
  success = false;
  try {
   table.put(put);
   table.get(get);
   table.append(append);
   table.increment(increment);
   table.delete(delete);

代码示例来源:origin: apache/hbase

@Test
public void testChangeCellWithDifferntColumnFamily() throws Exception {
 TableName tableName = TableName.valueOf(name.getMethodName());
 createTableWithCoprocessor(tableName,
  ChangeCellWithDifferntColumnFamilyObserver.class.getName());
 try (Table table = connection.getTable(tableName)) {
  Increment increment = new Increment(ROW).addColumn(CF1_BYTES, CQ1, 1);
  table.increment(increment);
  Get get = new Get(ROW).addColumn(CF2_BYTES, CQ1);
  Result result = table.get(get);
  assertEquals(1, result.size());
  assertEquals(1, Bytes.toLong(result.getValue(CF2_BYTES, CQ1)));
  Append append = new Append(ROW).addColumn(CF1_BYTES, CQ2, VALUE);
  table.append(append);
  get = new Get(ROW).addColumn(CF2_BYTES, CQ2);
  result = table.get(get);
  assertEquals(1, result.size());
  assertTrue(Bytes.equals(VALUE, result.getValue(CF2_BYTES, CQ2)));
 }
}

代码示例来源:origin: apache/hbase

@Test
public void testIncrementingInvalidValue() throws Exception {
 LOG.info("Starting " + this.name.getMethodName());
 final TableName TABLENAME =
   TableName.valueOf(filterStringSoTableNameSafe(this.name.getMethodName()));
 Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);
 final byte[] COLUMN = Bytes.toBytes("column");
 Put p = new Put(ROW);
 // write an integer here (not a Long)
 p.addColumn(FAMILY, COLUMN, Bytes.toBytes(5));
 ht.put(p);
 try {
  ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);
  fail("Should have thrown DoNotRetryIOException");
 } catch (DoNotRetryIOException iox) {
  // success
 }
 Increment inc = new Increment(ROW);
 inc.addColumn(FAMILY, COLUMN, 5);
 try {
  ht.increment(inc);
  fail("Should have thrown DoNotRetryIOException");
 } catch (DoNotRetryIOException iox) {
  // success
 }
}

代码示例来源:origin: apache/hbase

@Test
public void testCellSizeLimit() throws IOException {
 final TableName tableName = TableName.valueOf("testCellSizeLimit");
 HTableDescriptor htd = new HTableDescriptor(tableName);
 htd.setConfiguration(HRegion.HBASE_MAX_CELL_SIZE_KEY, Integer.toString(10 * 1024)); // 10K
 HColumnDescriptor fam = new HColumnDescriptor(FAMILY);
 htd.addFamily(fam);
 Admin admin = TEST_UTIL.getAdmin();
 admin.createTable(htd);
 try (Table t = TEST_UTIL.getConnection().getTable(tableName)) {
  t.put(new Put(ROW).addColumn(FAMILY, QUALIFIER, Bytes.toBytes(0L)));
  t.increment(new Increment(ROW).addColumn(FAMILY, QUALIFIER, 1L));
 try (Table t = TEST_UTIL.getConnection().getTable(tableName)) {
  t.put(new Put(ROW).addColumn(FAMILY, QUALIFIER, new byte[9*1024]));

代码示例来源:origin: apache/hbase

@Test
public void testBatchWithIncrementAndAppend() throws Exception {
 LOG.info("test=testBatchWithIncrementAndAppend");
 final byte[] QUAL1 = Bytes.toBytes("qual1");
 final byte[] QUAL2 = Bytes.toBytes("qual2");
 final byte[] QUAL3 = Bytes.toBytes("qual3");
 final byte[] QUAL4 = Bytes.toBytes("qual4");
 Table table = UTIL.getConnection().getTable(TEST_TABLE);
 Delete d = new Delete(ONE_ROW);
 table.delete(d);
 Put put = new Put(ONE_ROW);
 put.addColumn(BYTES_FAMILY, QUAL1, Bytes.toBytes("abc"));
 put.addColumn(BYTES_FAMILY, QUAL2, Bytes.toBytes(1L));
 table.put(put);
 Increment inc = new Increment(ONE_ROW);
 inc.addColumn(BYTES_FAMILY, QUAL2, 1);
 inc.addColumn(BYTES_FAMILY, QUAL3, 1);
 table.batch(actions, multiRes);
 validateResult(multiRes[1], QUAL1, Bytes.toBytes("abcdef"));
 validateResult(multiRes[1], QUAL4, Bytes.toBytes("xyz"));

代码示例来源:origin: apache/phoenix

byte[] row = increment.getRow();
List<RowLock> locks = Lists.newArrayList();
TimeRange tr = increment.getTimeRange();
region.startRegionOperation();
try {
    long maxTimestamp = tr.getMax();
    boolean validateOnly = true;
    Get get = new Get(row);
    get.setTimeRange(tr.getMin(), tr.getMax());
    for (Map.Entry<byte[], List<Cell>> entry : increment.getFamilyCellMap().entrySet()) {
      byte[] cf = entry.getKey();
      for (Cell cq : entry.getValue()) {
        long value = Bytes.toLong(cq.getValueArray(), cq.getValueOffset());
        get.addColumn(cf, CellUtil.cloneQualifier(cq));
        long cellTimestamp = cq.getTimestamp();
    if (result.isEmpty()) {
      return getErrorResult(row, maxTimestamp, SQLExceptionCode.SEQUENCE_UNDEFINED.getErrorCode());
    Put put = new Put(row, timestamp);
    int numIncrementKVs = increment.getFamilyCellMap().get(PhoenixDatabaseMetaData.SYSTEM_SEQUENCE_FAMILY_BYTES).size();
      put.add(newCurrentValueKV);
      Sequence.replaceCurrentValueKV(cells, newCurrentValueKV);
    region.batchMutate(mutations);

代码示例来源:origin: apache/hbase

Increment inc = new Increment(Bytes.toBytes("good")).addColumn(FAMILY, null, 100);
List<Row> batches = new ArrayList<>();
batches.add(new Put(Bytes.toBytes("fail")).addColumn(FAMILY, null, new byte[CELL_SIZE]));
batches.add(new Put(Bytes.toBytes("fail")).addColumn(FAMILY, null, new byte[CELL_SIZE]));
batches.add(new Put(Bytes.toBytes("good")).addColumn(FAMILY, null, new byte[1]));
Object[] objs = new Object[batches.size()];
try (Table table = TEST_UTIL.getConnection().getTable(TABLE_NAME)) {
 table.batch(batches, objs);
 fail("Where is the exception? We put the malformed cells!!!");
} catch (RetriesExhaustedWithDetailsException e) {

相关文章