org.apache.hadoop.hbase.client.Table.checkAndMutate()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(11.3k)|赞(0)|评价(0)|浏览(207)

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

Table.checkAndMutate介绍

[英]Atomically checks if a row/family/qualifier value matches the expected value. If it does, it adds the Put/Delete/RowMutations.

Use the returned CheckAndMutateBuilder to construct your request and then execute it. This is a fluent style API, the code is like:

  1. table.checkAndMutate(row, family).qualifier(qualifier).ifNotExists().thenPut(put);

[中]自动检查行/族/限定符值是否与预期值匹配。如果是,它会添加Put/Delete/rowstations。
使用返回的CheckAndMutateBuilder构造请求,然后执行它。这是一个流畅风格的API,代码如下:

  1. table.checkAndMutate(row, family).qualifier(qualifier).ifNotExists().thenPut(put);

代码示例

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

  1. public void finishBackupExclusiveOperation() throws IOException {
  2. LOG.debug("Finish backup exclusive operation");
  3. try (Table table = connection.getTable(tableName)) {
  4. Put put = createPutForStopBackupSession();
  5. if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)
  6. .ifEquals(ACTIVE_SESSION_YES).thenPut(put)) {
  7. throw new IOException("There is no active backup exclusive operation");
  8. }
  9. }
  10. }

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

  1. /**
  2. * Exclusive operations are: create, delete, merge
  3. * @throws IOException if a table operation fails or an active backup exclusive operation is
  4. * already underway
  5. */
  6. public void startBackupExclusiveOperation() throws IOException {
  7. LOG.debug("Start new backup exclusive operation");
  8. try (Table table = connection.getTable(tableName)) {
  9. Put put = createPutForStartBackupSession();
  10. // First try to put if row does not exist
  11. if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)
  12. .ifNotExists().thenPut(put)) {
  13. // Row exists, try to put if value == ACTIVE_SESSION_NO
  14. if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)
  15. .ifEquals(ACTIVE_SESSION_NO).thenPut(put)) {
  16. throw new ExclusiveOperationException();
  17. }
  18. }
  19. }
  20. }

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

  1. @Override
  2. public Object run() throws Exception {
  3. Put p = new Put(TEST_ROW);
  4. p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(1));
  5. try(Connection conn = ConnectionFactory.createConnection(conf);
  6. Table t = conn.getTable(TEST_TABLE)) {
  7. t.checkAndMutate(TEST_ROW, TEST_FAMILY).qualifier(TEST_QUALIFIER)
  8. .ifEquals(Bytes.toBytes("test_value")).thenPut(p);
  9. }
  10. return null;
  11. }
  12. };

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

  1. @Override
  2. public Object run() throws Exception {
  3. Delete d = new Delete(TEST_ROW);
  4. d.addFamily(TEST_FAMILY);
  5. try(Connection conn = ConnectionFactory.createConnection(conf);
  6. Table t = conn.getTable(TEST_TABLE)) {
  7. t.checkAndMutate(TEST_ROW, TEST_FAMILY).qualifier(TEST_QUALIFIER)
  8. .ifEquals(Bytes.toBytes("test_value")).thenDelete(d);
  9. }
  10. return null;
  11. }
  12. };

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

  1. @Test(expected = InvalidMutationDurabilityException.class)
  2. public void testCheckWithMutateToTableNeedReplicate() throws Exception {
  3. tableNeedReplicate.checkAndMutate(Bytes.toBytes("row"), CF).qualifier(CQ).ifNotExists()
  4. .thenPut(newPutWithSkipWAL());
  5. }
  6. }

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

  1. @Test
  2. public void testCheckWithMutateToTableNotReplicate() throws Exception {
  3. tableNotReplicate.checkAndMutate(Bytes.toBytes("row"), CF).qualifier(CQ).ifNotExists()
  4. .thenPut(newPutWithSkipWAL());
  5. }

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

  1. @Override
  2. public Object run() throws Exception {
  3. try {
  4. if (table == null) {
  5. table = connection.getTable(tableName);
  6. }
  7. if (m instanceof Increment) {
  8. table.increment((Increment) m);
  9. } else if (m instanceof Append) {
  10. table.append((Append) m);
  11. } else if (m instanceof Put) {
  12. table.checkAndMutate(row, cf).qualifier(q).ifEquals(v).thenPut((Put) m);
  13. } else if (m instanceof Delete) {
  14. table.checkAndMutate(row, cf).qualifier(q).ifEquals(v).thenDelete((Delete) m);
  15. } else {
  16. throw new IllegalArgumentException("unsupported mutation "
  17. + m.getClass().getSimpleName());
  18. }
  19. totalOpTimeMs.addAndGet(System.currentTimeMillis() - start);
  20. } catch (IOException e) {
  21. recordFailure(m, keyBase, start, e);
  22. }
  23. return null;
  24. }
  25. }

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

  1. @Test
  2. public void testCheckAndDelete() throws IOException {
  3. final byte [] value1 = Bytes.toBytes("aaaa");
  4. Table table = TEST_UTIL.createTable(TableName.valueOf(name.getMethodName()),
  5. FAMILY);
  6. Put put = new Put(ROW);
  7. put.addColumn(FAMILY, QUALIFIER, value1);
  8. table.put(put);
  9. Delete delete = new Delete(ROW);
  10. delete.addColumns(FAMILY, QUALIFIER);
  11. boolean ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
  12. .ifEquals(value1).thenDelete(delete);
  13. assertTrue(ok);
  14. }

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

  1. @Test
  2. public void testCheckAndPutCount() throws Exception {
  3. byte[] valOne = Bytes.toBytes("Value");
  4. byte[] valTwo = Bytes.toBytes("ValueTwo");
  5. byte[] valThree = Bytes.toBytes("ValueThree");
  6. Put p = new Put(row);
  7. p.addColumn(cf, qualifier, valOne);
  8. table.put(p);
  9. Put pTwo = new Put(row);
  10. pTwo.addColumn(cf, qualifier, valTwo);
  11. table.checkAndMutate(row, cf).qualifier(qualifier).ifEquals(valOne).thenPut(pTwo);
  12. Put pThree = new Put(row);
  13. pThree.addColumn(cf, qualifier, valThree);
  14. table.checkAndMutate(row, cf).qualifier(qualifier).ifEquals(valOne).thenPut(pThree);
  15. metricsRegionServer.getRegionServerWrapper().forceRecompute();
  16. assertCounter("checkMutateFailedCount", 1);
  17. assertCounter("checkMutatePassedCount", 1);
  18. }

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

  1. @Override
  2. public Void run() throws Exception {
  3. try (Connection connection = ConnectionFactory.createConnection(conf)) {
  4. try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
  5. Delete d = new Delete(row);
  6. d.addColumn(TEST_FAMILY1, q1, 120);
  7. t.checkAndMutate(row, TEST_FAMILY1).qualifier(q1).ifEquals(value).thenDelete(d);
  8. }
  9. }
  10. return null;
  11. }
  12. });

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

  1. @Override
  2. public Void run() throws Exception {
  3. try (Connection connection = ConnectionFactory.createConnection(conf)) {
  4. try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
  5. Delete d = new Delete(TEST_ROW1);
  6. d.addColumns(TEST_FAMILY1, TEST_Q1, 120);
  7. t.checkAndMutate(TEST_ROW1, TEST_FAMILY1).qualifier(TEST_Q1)
  8. .ifEquals(ZERO).thenDelete(d);
  9. }
  10. }
  11. return null;
  12. }
  13. });

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

  1. @Test
  2. public void testCheckAndPutHooks() throws IOException {
  3. final TableName tableName = TableName.valueOf(TEST_TABLE.getNameAsString() + "." + name.getMethodName());
  4. try (Table table = util.createTable(tableName, new byte[][] { A, B, C })) {
  5. Put p = new Put(Bytes.toBytes(0));
  6. p.addColumn(A, A, A);
  7. table.put(p);
  8. p = new Put(Bytes.toBytes(0));
  9. p.addColumn(A, A, A);
  10. verifyMethodResult(SimpleRegionObserver.class,
  11. new String[] { "hadPreCheckAndPut", "hadPreCheckAndPutAfterRowLock", "hadPostCheckAndPut" },
  12. tableName, new Boolean[] { false, false, false });
  13. table.checkAndMutate(Bytes.toBytes(0), A).qualifier(A).ifEquals(A).thenPut(p);
  14. verifyMethodResult(SimpleRegionObserver.class,
  15. new String[] { "hadPreCheckAndPut", "hadPreCheckAndPutAfterRowLock", "hadPostCheckAndPut" },
  16. tableName, new Boolean[] { true, true, true });
  17. } finally {
  18. util.deleteTable(tableName);
  19. }
  20. }

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

  1. @Override
  2. boolean testRow(final int i) throws IOException {
  3. final byte [] bytes = format(i);
  4. // checkAndXXX tests operate on only a single value
  5. // Put a known value so when we go to check it, it is there.
  6. Put put = new Put(bytes);
  7. put.addColumn(FAMILY_ZERO, getQualifier(), bytes);
  8. this.table.put(put);
  9. this.table.checkAndMutate(bytes, FAMILY_ZERO).qualifier(getQualifier())
  10. .ifEquals(bytes).thenPut(put);
  11. return true;
  12. }
  13. }

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

  1. @Override
  2. public boolean checkAndMutate(ByteBuffer table, ByteBuffer row, ByteBuffer family,
  3. ByteBuffer qualifier, TCompareOp compareOp, ByteBuffer value, TRowMutations rowMutations)
  4. throws TIOError, TException {
  5. checkReadOnlyMode();
  6. try (final Table htable = getTable(table)) {
  7. return htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))
  8. .qualifier(byteBufferToByteArray(qualifier))
  9. .ifMatches(compareOpFromThrift(compareOp), byteBufferToByteArray(value))
  10. .thenMutate(rowMutationsFromThrift(rowMutations));
  11. } catch (IOException e) {
  12. throw getTIOError(e);
  13. }
  14. }

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

  1. @Test
  2. public void testCheckAndDeleteHooks() throws IOException {
  3. final TableName tableName = TableName.valueOf(TEST_TABLE.getNameAsString() + "." + name.getMethodName());
  4. Table table = util.createTable(tableName, new byte[][] { A, B, C });
  5. try {
  6. Put p = new Put(Bytes.toBytes(0));
  7. p.addColumn(A, A, A);
  8. table.put(p);
  9. Delete d = new Delete(Bytes.toBytes(0));
  10. table.delete(d);
  11. verifyMethodResult(
  12. SimpleRegionObserver.class, new String[] { "hadPreCheckAndDelete",
  13. "hadPreCheckAndDeleteAfterRowLock", "hadPostCheckAndDelete" },
  14. tableName, new Boolean[] { false, false, false });
  15. table.checkAndMutate(Bytes.toBytes(0), A).qualifier(A).ifEquals(A).thenDelete(d);
  16. verifyMethodResult(
  17. SimpleRegionObserver.class, new String[] { "hadPreCheckAndDelete",
  18. "hadPreCheckAndDeleteAfterRowLock", "hadPostCheckAndDelete" },
  19. tableName, new Boolean[] { true, true, true });
  20. } finally {
  21. util.deleteTable(tableName);
  22. table.close();
  23. }
  24. }

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

  1. @Override
  2. boolean testRow(final int i) throws IOException {
  3. final byte [] bytes = format(i);
  4. // checkAndXXX tests operate on only a single value
  5. // Put a known value so when we go to check it, it is there.
  6. Put put = new Put(bytes);
  7. put.addColumn(FAMILY_ZERO, getQualifier(), bytes);
  8. this.table.put(put);
  9. Delete delete = new Delete(put.getRow());
  10. delete.addColumn(FAMILY_ZERO, getQualifier());
  11. this.table.checkAndMutate(bytes, FAMILY_ZERO).qualifier(getQualifier())
  12. .ifEquals(bytes).thenDelete(delete);
  13. return true;
  14. }
  15. }

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

  1. @Override
  2. public Void run() throws Exception {
  3. try (Connection connection = ConnectionFactory.createConnection(conf)) {
  4. try (Table t = connection.getTable(TEST_TABLE.getTableName())) {
  5. Delete d = new Delete(row);
  6. d.addColumns(TEST_FAMILY1, TEST_Q1);
  7. t.checkAndMutate(row, TEST_FAMILY1).qualifier(TEST_Q1).ifEquals(value).thenDelete(d);
  8. fail(user.getShortName() + " should not be allowed to do checkAndDelete");
  9. } catch (Exception e) {
  10. }
  11. }
  12. return null;
  13. }
  14. });

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

  1. @Override
  2. boolean testRow(final int i) throws IOException {
  3. final byte [] bytes = format(i);
  4. // checkAndXXX tests operate on only a single value
  5. // Put a known value so when we go to check it, it is there.
  6. Put put = new Put(bytes);
  7. put.addColumn(FAMILY_ZERO, getQualifier(), bytes);
  8. this.table.put(put);
  9. RowMutations mutations = new RowMutations(bytes);
  10. mutations.add(put);
  11. this.table.checkAndMutate(bytes, FAMILY_ZERO).qualifier(getQualifier())
  12. .ifEquals(bytes).thenMutate(mutations);
  13. return true;
  14. }
  15. }

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

  1. @Override
  2. public boolean checkAndPut(ByteBuffer table, ByteBuffer row, ByteBuffer family,
  3. ByteBuffer qualifier, ByteBuffer value, TPut put) throws TIOError, TException {
  4. checkReadOnlyMode();
  5. Table htable = getTable(table);
  6. try {
  7. Table.CheckAndMutateBuilder builder = htable.checkAndMutate(byteBufferToByteArray(row),
  8. byteBufferToByteArray(family)).qualifier(byteBufferToByteArray(qualifier));
  9. if (value == null) {
  10. return builder.ifNotExists().thenPut(putFromThrift(put));
  11. } else {
  12. return builder.ifEquals(byteBufferToByteArray(value)).thenPut(putFromThrift(put));
  13. }
  14. } catch (IOException e) {
  15. throw getTIOError(e);
  16. } finally {
  17. closeTable(htable);
  18. }
  19. }

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

  1. @Override
  2. public boolean checkAndDelete(ByteBuffer table, ByteBuffer row, ByteBuffer family,
  3. ByteBuffer qualifier, ByteBuffer value, TDelete deleteSingle) throws TIOError, TException {
  4. checkReadOnlyMode();
  5. Table htable = getTable(table);
  6. try {
  7. Table.CheckAndMutateBuilder mutateBuilder =
  8. htable.checkAndMutate(byteBufferToByteArray(row), byteBufferToByteArray(family))
  9. .qualifier(byteBufferToByteArray(qualifier));
  10. if (value == null) {
  11. return mutateBuilder.ifNotExists().thenDelete(deleteFromThrift(deleteSingle));
  12. } else {
  13. return mutateBuilder.ifEquals(byteBufferToByteArray(value))
  14. .thenDelete(deleteFromThrift(deleteSingle));
  15. }
  16. } catch (IOException e) {
  17. throw getTIOError(e);
  18. } finally {
  19. closeTable(htable);
  20. }
  21. }

相关文章