首先环境为:
HBase的版本2.0.1,Hadoop版本2.7.1, JDK1.8
由于HBase目前网上介绍的API好多已经过时, 这里使用了最新的API,演示了如何创建表,插入数据,获取数据, 删除表几个功能。
public class HbaSEOpreation {
/*
旧版API,目前已经deprecated
*/
@Test
public void createTableOld() throws Exception {
//配置ZooKeeper
Configuration conf = new Configuration();
conf.set("hbase.zookeeper.quorum", "node1");
Connection connection = ConnectionFactory.createConnection(conf);
HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();
//创建表
HTableDescriptor ht = new HTableDescriptor(TableName.valueOf("mystudent"));
// 创建列族
HColumnDescriptor info = new HColumnDescriptor("info");
HColumnDescriptor grade = new HColumnDescriptor("grade");
ht.addFamily(info);
ht.addFamily(grade);
//创建表
admin.createTable(ht);
admin.close();
}
/*
以下为新的API
*/
@Test
public void createTable() throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "node1");
Connection connection = ConnectionFactory.createConnection(conf);
//获取HBase管理员
Admin admin = connection.getAdmin();
//创建表
TableDescriptorBuilder emp = TableDescriptorBuilder.newBuilder(TableName.valueOf("student"));
// 添加列族信息
ColumnFamilyDescriptor info = ColumnFamilyDescriptorBuilder
.newBuilder(Bytes.toBytes("info")).build();
ColumnFamilyDescriptor grade = ColumnFamilyDescriptorBuilder
.newBuilder(Bytes.toBytes("grade")).build();
ArrayList<ColumnFamilyDescriptor> familes = new ArrayList<>();
familes.add(info);
familes.add(grade);
emp.setColumnFamilies(familes);
admin.createTable(emp.build());
admin.close();
}
@Test
public void insert() throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "node1");
Connection connection = ConnectionFactory.createConnection(conf);
//打开表(获取表的实例)
Table table = connection.getTable(TableName.valueOf("student"));
//向表内添加2条信息
ArrayList<Put> puts = new ArrayList<>();
Put put1 = new Put(Bytes.toBytes("stu001"));
put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("Tom"));
put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("13"));
Put put2 = new Put(Bytes.toBytes("stu002"));
put2.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("Steven"));
put2.addColumn(Bytes.toBytes("grade"), Bytes.toBytes("Chinese"), Bytes.toBytes("87"));
puts.add(put1);
puts.add(put2);
table.put(puts);
//关闭表
table.close();
}
@Test
public void testGet() throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "node1");
Connection connection = ConnectionFactory.createConnection(conf);
//打开表(获取表的实例)
Table table = connection.getTable(TableName.valueOf("student"));
//获取数据
ArrayList<Get> gets = new ArrayList<>();
Get stu001 = new Get(Bytes.toBytes("stu001"));
Get stu002 = new Get(Bytes.toBytes("stu002"));
gets.add(stu001);
gets.add(stu002);
Result[] results = table.get(gets);
//打印
for (Result r : results) {
String name = Bytes.toString(r.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")));
System.out.println(name);
}
//关闭表
table.close();
}
@Test
public void testScan() throws Exception{
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "node1");
Connection connection = ConnectionFactory.createConnection(conf);
//打开表(获取表的实例)
Table table = connection.getTable(TableName.valueOf("student"));
Scan scan = new Scan();
ResultScanner results = table.getScanner(scan);
for (Result r : results) {
String name = Bytes.toString(r.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")));
System.out.println(name);
}
//关闭表
table.close();
}
/*
drop table
*/
@Test
public void testDropTable() throws Exception{
TableName mystudent = TableName.valueOf("mystudent");
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "node1");
Connection connection = ConnectionFactory.createConnection(conf);
Admin admin = connection.getAdmin();
if(admin.tableExists(mystudent)){
admin.disableTable(mystudent);
admin.deleteTable(mystudent);
System.out.println("Delete table sucessed!!!");
}else {
System.out.println("Table is not exists!!!");
}
admin.close();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。