HBase--Namespace JavaAPI基本操作

HBase–Namespace JavaAPI增删改查操作

学习笔记,内容相对简略
hbase版本:2.3.4
尽量避免使用过时的方法

导入依赖

		<dependency>
            <groupId>org.apache.hbasegroupId>
            <artifactId>hbase-clientartifactId>
            <version>2.3.4version>
        dependency>
        <dependency>
            <groupId>org.apache.hbasegroupId>
            <artifactId>hbase-serverartifactId>
            <version>2.3.4version>
        dependency>

1. 首先需要获取HBase连接对象和Admin(HBaseAdmin也行,不影响)对象。

通过连接对象获取Admin或者是HBaseAdmin对象,只有获取到Admin对象才能对HBase进行操作,在代码结束之后要admin。

public class NameSpaceOp {
     
//Hbase配置对象
   public Configuration conf;
   //连接对象
   public Connection connection;
   //在hbase中管理、访问表需要先创建HbaseAdmin对象
   HBaseAdmin admin;

   @Before
   public void init() {
     
       //创建Hbase配置对象
       conf = HBaseConfiguration.create();
       //配置Hbase连接参数
       conf.set("hbase.zookeeper.quorum", "master,slave1,slave2");
       try {
     
           //创建Hbase连接对象
           connection = ConnectionFactory.createConnection(conf);
           //创建HbaseAdmin对象
           admin = (HBaseAdmin) connection.getAdmin();
       } catch (IOException e) {
     
           e.printStackTrace();
       }
   }

   @After
   public void destroy() throws IOException {
     
       admin.close();
   }
}

2. 创建Namespace

创建namespace只需要两行代码。

/**
     * 创建namespace
     * @throws IOException
     */
    @Test
    public void create() throws IOException {
     
        //创建namespace描述器建造者
        NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("haha").build();
        //创建namespace
        admin.createNamespace(namespaceDescriptor);
    }

通过源码可以看出来NamespaceDescriptor的静态方法create,通过传入namespace的名称或者是传入一个NamespaceDescriptor会创建一个Builder对象,继续调用Builder对象的build方法就可以创建出NamespaceDescriptor对象。

namespace.create方法

HBase--Namespace JavaAPI基本操作_第1张图片

内部类Builder.buildHBase--Namespace JavaAPI基本操作_第2张图片

3. 列出所有Namespace

直接使用admin对象的listNamespaceDescriptors()方法就可以获取所有的namespace描述器

 /**
     * 获取所有namespace
     * @throws IOException
     */
    @Test
    public void listNamespace() throws IOException {
     
        //获取namespace描述器列表
        NamespaceDescriptor[] namespaceDescriptors = admin.listNamespaceDescriptors();

        for (NamespaceDescriptor namespaceDescriptor : namespaceDescriptors) {
     
            //namespace名称
            System.out.println(namespaceDescriptor.getName());
        }
    }

4. 查询指定Namespace下的所有表

方法和获取所有namespace描述器的方法类似,改方法需要传入一个namespace的字符串名称。

/**
     * 查询指定namespace下的所有表
     * @throws IOException
     */
    @Test
    public void listNamespaceTableName() throws IOException {
     
        //获取指定namespace下的所有表名
        TableName[] tableNames = admin.listTableNamesByNamespace("default");
        for (TableName tableName : tableNames) {
     
            System.out.println(tableName);
        }
    }

5. 删除Namespace

/**
     * 删除namespace
     * @throws IOException
     */
    @Test
    public void deleteNamespace() throws IOException {
     
        admin.deleteNamespace("haha");
    }

你可能感兴趣的:(大数据笔记,hbase,java,大数据)