使用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); }