HBase Client JAVA API

在java中通过hbase client对hbase进行读写大体有如下步骤:

  • 创建HBaseConfiguration对象,该对象可以读取CLASSPATH下的hbase-site.xml文件的内容。
    Configuration config = HBaseConfiguration.create();
  • 用前面的config对象为入参创建Connection对象来连接至目标HBase集群。connection对象对资源消耗较大,应该避免创建过多的实例。使用完毕后,调用connection的close()方法关闭连接,建议使用try/finally来确保连接的关闭。
    Connection connection = ConnectionFactory.createConnection(config);
  • 以指定的table名称(应该是已存在的)为入参创建Table对象来连接指定的表。使用完毕后,需要调用table的close()方法进行关闭。与connection不同,table对象是轻量的,对table对象的创建,不需要像connection那样小心,当然,这并不是鼓励你创建得越多越好。
    Table table = connection.getTable(TableName.valueOf("WordCount"));
  • 以指定的row key(可以是在HBase中还不存在的)为入参创建Put对象来持有要写入的数据。
    Put p = new Put(Bytes.toBytes("key"));
  • 调用Put对象的addColumn方法,接受列族名称(column family)、列名(column qualifier)和要写入的值作为参数。可以多次调用该方法让put对象持有一定数量的数据后,再一次性提交。
    put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("words"), Bytes.toBytes("word"));
  • 以Put对象为入参,调用table的put方法来提交要写入hbase的数据
      
    table.put(put);
  • 关闭table
    if(table != null) table.close();
  • 关闭connection
    connection.close();

虽然可能应用场景相对较少,但还是附带介绍一下从HBase读取数据:

  • 以指定的row key为入参创建Get对象
    Get get = new Get(Bytes.toBytes("key"));
  • 以Get实例为入参调用table的get方法来获取结果集对象Result
    Result r = table.get(get);
  • 从结果集中获取制定列的值
    byte[] value = r.getValue(Bytes.toBytes("cf"), Bytes.toBytes("words"));
  • 也可以使用scan来批量读取,Scanner实现了Iterable,因此可以使用foreach来进行遍历:
    Scan scan = new Scan();
    //获取指定列族所有列的数据
    scan.addFamily(Bytes.toBytes("cf"));
    ResultScanner scanner = table.getScanner(scan);
    try {
        for (Result r : scanner) {...}
    }finally{
        scanner.close();
        }
    

猜你喜欢

转载自www.cnblogs.com/felixzh/p/10243360.html