hbase java操作api - nameSpace,表,列族,列的操作 代码示例

maven依赖


      org.apache.hbase
      hbase-client
      1.3.1



      org.apache.hadoop
      hadoop-hdfs
      2.2.0


代码示例

有很多的代码是重复的,只是为形成记忆,见谅,
另外需要将 hbase-site.xml,hdfs-site.xml,core-site.xml三个文件放到Resources上目录

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.client.coprocessor.Batch;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.io.compress.Compression;
import org.apache.hadoop.hbase.util.Bytes;
import java.util.ArrayList;
import java.util.List;

public class HbaseApi_test_1 {
    private static Connection hbaseConn;
    private static Configuration hbaseConf;
    //HBaseAdmin 提供了一个接口来管理 HBase 数据库的表信息
    private static Admin hbaseAdmin;

    /*** 静态构造,在调用静态方法前运行,  初始化连接对象  * */
    static {
        hbaseConf = HBaseConfiguration.create();
        try {
            hbaseConn = ConnectionFactory.createConnection(hbaseConf);
            System.out.println("连接上了?" + !hbaseConn.isClosed());
            hbaseAdmin = hbaseConn.getAdmin();
        } catch (java.lang.Exception e) {
            e.printStackTrace();
        }
    }

//****************************创建namespace (相当于数据库)****************************
    public static void createNameSpace() throws java.lang.Exception {
        //注意这里的语法
        NamespaceDescriptor ns1 = NamespaceDescriptor.create("ns1").build();
        hbaseAdmin.createNamespace(ns1);
        hbaseAdmin.close();
    }

    //****************************删除namespace (相当于数据库)****************************
    public static void deleteNameSpace() throws java.lang.Exception {
        //注意这里的语法
        hbaseAdmin.deleteNamespace("ns2");
        hbaseAdmin.close();
    }

    //****************************创建表****************************
    public static void create_Table() throws java.lang.Exception {
        TableName tableName = TableName.valueOf("ns1:mytest_4");
        System.out.println(hbaseAdmin.tableExists(tableName));

        if (!hbaseAdmin.tableExists(tableName)) {
            //HTableDescriptor 包含了表的名字极其对应表的列族
            HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
            //HColumnDescriptor 维护着关于列族的信息,例如版本号,压缩设置等。
            HColumnDescriptor grade = new HColumnDescriptor(Bytes.toBytes("grade"));
            //数据保存的最大版本数
            grade.setMaxVersions(3);
            hTableDescriptor.addFamily(grade);

            HColumnDescriptor course = new HColumnDescriptor(Bytes.toBytes("course"));
            //设置保存的版本数,最小版本数和最大版本数
            course.setVersions(1, 3);
            hTableDescriptor.addFamily(course);

            hbaseAdmin.createTable(hTableDescriptor);
            /*
            建表时,根据rowkey,预分3个区域Region
            */
            //hbaseAdmin.createTable(t, Bytes.toBytes("row200"), Bytes.toBytes("row800"), 3);
        } else {
            System.out.println("表已经存在");
        }
    }

    //****************************修改表的元数据****************************
    public static void update_TableMeta() throws java.lang.Exception {
        TableName tableName = TableName.valueOf("ns1:mytest_4");

        HTableDescriptor tableDescriptor = hbaseAdmin.getTableDescriptor(tableName);
        //添加一个列族
        HColumnDescriptor newColumn = new HColumnDescriptor("address");
        //进行compaction的时候使用压缩算法
        newColumn.setCompactionCompressionType(Compression.Algorithm.GZ);
        //最大版本,没必要的话,就设置成1个
        newColumn.setMaxVersions(HConstants.ALL_VERSIONS);
        tableDescriptor.addFamily(newColumn);
        //修改以已有的列族
        HColumnDescriptor existingColumn = new HColumnDescriptor("grade");
        existingColumn.setCompactionCompressionType(Compression.Algorithm.GZ);
        existingColumn.setMaxVersions(HConstants.ALL_VERSIONS);
        tableDescriptor.modifyFamily(existingColumn);
        //修改表的元信息
        hbaseAdmin.modifyTable(tableName, tableDescriptor);

        hbaseAdmin.close();
    }

    //****************************添加列族****************************
    public static void add_TableFamily() throws java.lang.Exception {
        TableName tableName = TableName.valueOf("ns1:mytest_4");
        //取得一个要操作的表
        Table table = hbaseConn.getTable(tableName);

        //定义一个列族
        HColumnDescriptor address = new HColumnDescriptor(Bytes.toBytes("address"));
        //添加列族
        hbaseAdmin.addColumn(tableName, address);

        //返回表的描述信息
        HTableDescriptor tableDescriptor = hbaseAdmin.getTableDescriptor(tableName);
        System.out.println();
        System.out.println(tableDescriptor);
        System.out.println();

        //hbaseConn.close();
    }

    //****************************删除列族****************************
    public static void del_TableFamily() throws java.lang.Exception {
        TableName tableName = TableName.valueOf("ns1:mytest_4");
        //取得一个要操作的表
        Table table = hbaseConn.getTable(tableName);

        //删除列族
        hbaseAdmin.deleteColumn(tableName, Bytes.toBytes("address"));

        //返回表的描述信息
        HTableDescriptor tableDescriptor = hbaseAdmin.getTableDescriptor(tableName);
        System.out.println();
        System.out.println(tableDescriptor);
        System.out.println();

        //hbaseConn.close();
    }

    //****************************查询表状态,删除表等****************************
    public static void tableZhuangtai() throws java.lang.Exception {
        TableName tableName = TableName.valueOf("ns1:mytest_4");
        System.out.println("表是否可用:" + hbaseAdmin.isTableEnabled(tableName));  //true
        System.out.println("表是否禁用:" + hbaseAdmin.isTableDisabled(tableName)); //false
        //禁用表
        hbaseAdmin.disableTable(tableName);
        System.out.println("表是否禁用:" + hbaseAdmin.isTableDisabled(tableName));  //true
        System.out.println("表是否存在:" + hbaseAdmin.tableExists(tableName));     //true
        //删除表
        hbaseAdmin.deleteTable(tableName);
        System.out.println("表是否存在:" + hbaseAdmin.tableExists(tableName));     //false
    }
}

你可能感兴趣的:(#,Hbase,hbase)