首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何批量删除hbase中的多行?

如何批量删除hbase中的多行?
EN

Stack Overflow用户
提问于 2015-09-16 08:52:25
回答 2查看 19.9K关注 0票数 25

我在hbase表"mytable“中有以下几行具有这些键的行

代码语言:javascript
复制
user_1
user_2
user_3
...
user_9999999

我想使用Hbase shell删除以下内容中的行:

user_500到user_900

我知道没有办法删除,但是有没有办法我可以用"BulkDeleteProcessor“来删除呢?

我在这里看到:

https://github.com/apache/hbase/blob/master/hbase-examples/src/test/java/org/apache/hadoop/hbase/coprocessor/example/TestBulkDeleteProtocol.java

我只想粘贴导入内容,然后将其粘贴到shell中,但不知道如何操作。有人知道如何在jruby hbase shell中使用这个端点吗?

代码语言:javascript
复制
   Table ht = TEST_UTIL.getConnection().getTable("my_table");
    long noOfDeletedRows = 0L;
    Batch.Call<BulkDeleteService, BulkDeleteResponse> callable =
      new Batch.Call<BulkDeleteService, BulkDeleteResponse>() {
      ServerRpcController controller = new ServerRpcController();
      BlockingRpcCallback<BulkDeleteResponse> rpcCallback =
        new BlockingRpcCallback<BulkDeleteResponse>();

      public BulkDeleteResponse call(BulkDeleteService service) throws IOException {
        Builder builder = BulkDeleteRequest.newBuilder();
        builder.setScan(ProtobufUtil.toScan(scan));
        builder.setDeleteType(deleteType);
        builder.setRowBatchSize(rowBatchSize);
        if (timeStamp != null) {
          builder.setTimestamp(timeStamp);
        }
        service.delete(controller, builder.build(), rpcCallback);
        return rpcCallback.get();
      }
    };
    Map<byte[], BulkDeleteResponse> result = ht.coprocessorService(BulkDeleteService.class, scan
        .getStartRow(), scan.getStopRow(), callable);
    for (BulkDeleteResponse response : result.values()) {
      noOfDeletedRows += response.getRowsDeleted();
    }
    ht.close();

如果无法通过JRuby、Java或其他方法快速删除多行,则也可以。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32598003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档