首页 > 编程笔记 > MySQL笔记 阅读:5

Java HBase表的常见操作(附带实例)

使用 Java 操作 HBase 的相关类都在 org.apache.hadoop.hbase.client 模块中,它们都是与 HBase 数据存储管理相关的 API。

例如,使用 Admin 接口创建、更改、删除表;使用 Table 接口向表中添加数据、查询数据。

在讲解 Java API 操作 HBase  之前,我们先介绍 Java 客户端开发环境的配置。

Java客户端开发环境配置

要使用 Java 操作 HBase,只需将使用的 HBase 库包加入引用路径。

在 Eclipse 中手动导入 HBase 库包的方法为:

图 1 在Eclipse导入HBase库包

在工程目录的 src 目录下创建包、类文件,并在 Java 文件中导入需要的 HBase 库包,代码如下:
// 环境配置类
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
// HBase客户端接口
import org.apache.hadoop.hbase.client.*;
// 字节类
import org.apache.hadoop.hbase.util.Bytes;

构建Java客户端

在分布式环境中,Java 客户端需要通过分布式应用程序协调服务 ZooKeeper 来连接当前活跃的 HMaster 节点和需要的 HRegionServer 节点。所以先要使用 HBaseConfiguration 类来配置 ZooKeeper 的地址、端口,然后使用 Connection 类来建立连接,代码如下:
Public  static  Configuration  conf;
public  static  Connection  connection;
public  static  Admin  admin;
// 连接到HBase
public  static  void  init(){
// 创建配置对象
conf  =  HBaseConfiguration.create();
// 配置ZooKeeper的地址、端口
conf.set("hbase.zookeeper.quorum", "localhost");
conf.set("hbase.zookeeper.property.clientPort", "2181");
// 创建连接
try{
    connection  =  ConnectionFactory.createConnection(conf);
    admin  =  connection.getAdmin();
}
catch(IOException  e){
    e.printStackTrace();
    }
}
在上述代码中,使用 HBaseConfiguration.create() 方法创建相关的配置文件对象,使用该对象配置 ZooKeeper 的服务地址 localhost、端口 2181。

HBase表的操作

连接数据库后就可以执行创建表、禁用和删除表等操作,具体操作如下:
public static void createTable() throws IOException{
    // 创建连接
    init();
    TableName  tableName  =  TableName.valueOf("Student");
    if(admin.tableExists(tableName)){
        // 禁用和删除表
        admin.disableTable(tableName);
        admin.deleteTable(tableName);
        System.out.println(tableName.toString() + "is exists,delete it.");
    }
    // 创建表描述对象
    HTableDescriptor  tdesc  =  new  HTableDescriptor(tableName);
    // 创建列族的描述对象
    HColumnDescriptor  stuInfo  =  new  HColumnDescriptor("StuInfo");
    HColumnDescriptor  grades  =  new  HColumnDescriptor("Grades");
    // 给表描述对象增加列族描述对象
    tdesc.addFamily(stuInfo);
    tdesc.addFamily(grades);
    // 创建表
    admin.createTable(tdesc);
    // 关闭连接
    close();
}
Admin 接口用于管理 HBase 的表信息,执行创建表、删除表、列出所有表项等操作,其主要方法如下表所示。

表:Admin接口的主要方法
方法 返回类型 功能描述
admin.abort(String why, Throwable e) void 终止服务器或客户端
admin.closeRegion(byte[] regionname, String serverName) void 关闭 Region
admin.createTable(TableDescriptor desc) void 创建表
admin.deleteTable(TableName tableName) void 删除表
admin.disableTable(TableName tableName) void 禁用表
admin.enableTable(TableName tableName) void 解禁表
admin.listTables() HTableDescriptor[] 列出所有的表
admin.getTableDescriptor(TableName tableName) HTableDescriptor[] 获取表的详细信息

HTableDescriptor 类包含了表的详细信息,这个结果相当于 HBase Shell中DESCRIBE 命令查看表的类型、列族、写缓存最大缓存空间等表结构的结果。

HTableDescriptor 类提供了一些操作表结构的方法,如增加列族的 addFamily() 方法、删除列族的 removeFamily() 方法、设置属性值的 setValue() 方法等。

HColumnDescriptor 类包含了列族的详细信息,通常用于创建表和添加列族。列族一旦创建好便不能进行修改,但是可以进行删除并再次创建。该类提供了 getName()、getValue()、setValue() 等方法来操作列族的数据,示例如下:
HColumnDescriptor  stuInfo  =  new  HColumnDescriptor("StuInfo");
System.out.println("列族名字:"  +  new  String(stuInfo.getName()));
// 输出stuInfo
stuInfo.setValue("Name", "Jack");                   //设置key-value
String  s  =  new  String(stuInfo.getValue("Name"));// 将字节类型转换为字符串类型

相关文章