为方便后续代码 将hbase客户端操作的一些方法进行封装,如下:
1.获取一个hbase连接对象
2.获取一个hbase连接对象的admin
3.通过table名字获取一个hbase连接对象的table对象
4.展示table数据
5.创建一个namespace
package com.hjm.hbase.utils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
public class HbaseUtils {
/**
* 获取一个hbase连接对象
*/
public static Connection getHbaseConnection() throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "linux01:2181,linux02:2181,linux03:2181");
return ConnectionFactory.createConnection(conf);
}
/**
* 获取一个hbase连接对象的admin
*/
private static Admin getHbaseAdmin() throws Exception {
Admin admin = getHbaseConnection().getAdmin();
return admin;
}
/**
* 通过table名字获取一个hbase连接对象的table对象
*/
private static Table getHbaseTable(String tbName)throws Exception{
return getHbaseConnection().getTable(TableName.valueOf(tbName));
}
/**
*展示数据
*/
private static void showData(Result res)throws Exception{
if (res != null) {
while (res.advance()) {
Cell cell = res.current();
byte[] row = CellUtil.cloneRow(cell);
byte[] family = CellUtil.cloneFamily(cell);
byte[] qualifier = CellUtil.cloneQualifier(cell);
byte[] value = CellUtil.cloneValue(cell);
System.out.println("行键: " + Bytes.toString(row) + " 列族: " + Bytes.toString(family) + " 属性名: " + Bytes.toString(qualifier) + " 值: " + Bytes.toString(value));
}
}
}
/*创建一个namespace
*
* */
private static void createNameSpace(Admin admin) throws Exception {
//名称空间的创建这里需要一个属性构造器 命名为ns1
NamespaceDescriptor.Builder ns1 = NamespaceDescriptor.create("ns1");
//创建一个名称空间的属性构造器
NamespaceDescriptor.Builder builder = ns1.addConfiguration("author", "hjm");
//设置好了属性.对属性构造器激活生效
NamespaceDescriptor namespaceDescriptor = builder.build();
//调用方法进行创建
admin.createNamespace(namespaceDescriptor);
}
}