更新时间:2024-08-03 GMT+08:00

使用REST接口操作Namespace

功能简介

使用REST服务,传入对应host与port组成的url以及指定的Namespace,通过HTTP协议,对Namespace进行创建、查询、删除,获取指定Namespace中表的操作。

HBase表以“命名空间:表名”格式进行存储,若在创建表时不指定命名空间,则默认存储在“default”中。其中,“hbase”命名空间为系统表命名空间,请不要对该系统表命名空间进行业务建表或数据读写等操作。

代码样例

  • 方法调用
     // Namespace operations.
     createNamespace(url, "testNs");
     getAllNamespace(url);
     deleteNamespace(url, "testNs");
     getAllNamespaceTables(url, "default");
  • 创建namespace

    以下代码片段在“hbase-rest-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“HBaseRestTest”类的createNamespace方法中。

    private void createNamespace(String url, String namespace) {
         String endpoint = "/namespaces/" + namespace;
         Optional<ResultModel> result = sendAction(url + endpoint, MethodType.POST, null);
         if (result.orElse(new ResultModel()).getStatusCode() == HttpStatus.SC_CREATED) {
             LOG.info("Create namespace '{}' success.", namespace);
         } else {
             LOG.error("Create namespace '{}' failed.", namespace);
         }
     }
  • 查询所有namespace

    以下代码片段在“hbase-rest-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“HBaseRestTest”类的getAllNamespace方法中。

    private void getAllNamespace(String url) {
         String endpoint = "/namespaces";
         Optional<ResultModel> result = sendAction(url + endpoint, MethodType.GET, null);
         handleNormalResult(result);
     }
  • 删除指定namespace

    以下代码片段在“hbase-rest-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“HBaseRestTest”类的deleteNamespace方法中。

    private void deleteNamespace(String url, String namespace) {
         String endpoint = "/namespaces/" + namespace;
         Optional<ResultModel> result = sendAction(url + endpoint, MethodType.DELETE, null);
         if (result.orElse(new ResultModel()).getStatusCode() == HttpStatus.SC_OK) {
             LOG.info("Delete namespace '{}' success.", namespace);
         } else {
             LOG.error("Delete namespace '{}' failed.", namespace);
         }
     }
  • 根据指定namespace获取其中的表

    以下代码片段在“hbase-rest-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“HBaseRestTest”类的getAllNamespaceTables方法中。

    private void getAllNamespaceTables(String url, String namespace) {
         String endpoint = "/namespaces/" + namespace + "/tables";
         Optional<ResultModel> result = sendAction(url + endpoint, MethodType.GET, null);
         handleNormalResult(result);
     }