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