如何使用HBase API在BigTable中批量checkAndDelete?

时间:2017-02-24 01:29:41

标签: google-cloud-bigtable

我知道我们可以使用HBase API对BigTable进行checkAndDelete。我想知道我是否有办法提交checkAndDelete列表,以便我不需要逐个执行它们?我主要担心非批量处理的性能......

谢谢!

1 个答案:

答案 0 :(得分:1)

HBase API不为checkAnd*方法提供批量选项。 HBase API由gRPC protobuf API支持,该API本身是异步的。您可以使用底层API构建高吞吐量应用程序。

警告词:在我们面向公众的文档中,这几乎没有记录,但源代码应提供有关如何构建应用程序的足够说明。此API有活跃用户,包括Apache Beam的BigtableIO。 TODO:document this feature,随时对该功能发表评论或投票。

从较高的层面来说,这是你必须做的事情:

  AbstractBigtableConnection btConn = (AbstractBigtableConnection) connection;

  // BigtableSession can also be constructed by passing in a BigtableOptions.
  BigtableSession session = btConn.getSession();

  // AsyncExecutor encapsulates the notion of a "batch" of RPCs
  // that need to be completed as a unit.
  AsyncExecutor executor = session.createAsyncExecutor();

  // This listenable future will inform you when the request is done,
  // and if there were any exceptions.  
  // You can attach a FutureCallback
  ListenableFuture<CheckAndMutateRowResponse> response = 
      executor.checkAndMutateRowAsync(checkAndMutateRowRequest);

  // do more async work

  // Make sure all of the RPCs are complete.
  asyncExecutor.flush();

供参考,以下是有关ListenableFuture and FutureCallback的更多信息。您还可以深入了解BigtableBufferedMutator有关如何处理异常的一些建议。

您可以按照BigtableTable.checkAndDelete的实施方式创建CheckAndMutateRowRequest