1、导包-客户端
org.apache.hbase
hbase-client
1.4.6
2、连接Hbase
//连接hbase,主要是连接zookeeper
@Before
public void getConn()throws Exception{
Configuration configuration = HbaseConfiguration.create();
//获取集群地址
configuration.set("hbase.zookeeper.quorum","master,node1,node2");
//创建连接
Connection connection = ConnectionFactory.createConnection(configuration);
}
getAdmin对表结构进行操作,getTable对表数据进行操作
3、创建表—站在库的角度去创建表,获取admin
//创建一张表
@Test
public void getCreateTable()throws Exception{
//获取库,站在库的角度去创建表
Admin admin = connection.getAdmin();
//创建表传入的HTableDescriptor对象,参数为表名
HTableDescriptor test_api = new HTableDescriptor(TableName.valueOf("test_api"));
//创建表的列簇
HColumnDescriptor info = new HColumnDescriptor("info");
//设置列簇的属性
info.setMaxVersions(5);
//添加列簇
test_api.addFamily(info);
admin.createTable(test_api);
connection.close();
}
4、删除表
//删除表
@Test
public void getDelete() throws Exception {
Admin admin = connection.getAdmin();
if (admin.tableExists(TableName.valueOf("test_api"))) {
admin.disableTable(TableName.valueOf("test_api"));
admin.deleteTable(TableName.valueOf("test_api"));
} else {
System.out.println("表不存在");
}
connection.close();
}
5、put插入数据
//插入数据
@Test
public void getPut()throws Exception{
//获取表操作
Table test_api = connection.getTable(TableName.valueOf("test_api"));
//创建一个put对象,给定row_key,以字节数组的形式
Put put = new Put("1001".getBytes());
//指定put数据的列簇,列,数据
put.addColumn("info".getBytes(),"name".getBytes(),"dccc".getBytes());
//put数据,需要传入一个put对象
test_api.put(put);
connection.close();
}
6、get获取数据
//get获取数据
@Test
public void getGet()throws Exception{
Table test_api = connection.getTable(TableName.valueOf("test_api"));
Get get = new Get("1001".getBytes());
//get获取数据,需要传入一个get对象
Result result = test_api.get(get);
//结果接收
byte[] row = result.getRow();
String row1 = Bytes.toString(row);
byte[] value = result.getValue("info".getBytes(), "name".getBytes());
String name = Bytes.toString(value);
System.out.println(row1+name);
connection.close();
}
7、alter修改表结构数据
//alter修改表数据结构
@Test
public void getAlter() throws Exception {
Admin admin = connection.getAdmin();
//获取原有表的一个HTableDescriptor对象
HTableDescriptor tableDescriptor = admin.getTableDescriptor(TableName.valueOf("test_api"));
//获取列簇集合
HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();
//获取列簇
for (HColumnDescriptor columnFamily : columnFamilies) {
//获取列簇名称
String nameAsString = columnFamily.getNameAsString();
if ("info".equals(nameAsString)) {
//获取列簇,设置更改
columnFamily.setTimeToLive(10000);
}
}
//修改表结构属性,传入表名和一个HTableDescriptor对象
admin.modifyTable(TableName.valueOf("test_api"), tableDescriptor);
}