HBase自2.1.0版本之后,API的使用和以前存在差异,关于日常API,这里做简单汇总,后期还会继续加入。
声明:作者在这里使用的HBase版本为2.1.2,对应的jar包是2.1.2版本,在这里直接将HBase中lib文件下所有的jar包全部导入。
导入的jar包
import java.util.Iterator;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes;
创建表
public static void createTable() throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");//Hbase连接设置
Connection conn = ConnectionFactory.createConnection(conf);
Admin admin = conn.getAdmin();
// 创建对应的表名
TableName tableName = TableName.valueOf("testtable2");
TableDescriptorBuilder table = TableDescriptorBuilder.newBuilder(tableName);
// 创建列族
ColumnFamilyDescriptorBuilder colfam1 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("colfam1"));
colfam1.setMaxVersions(3);// 设置数据版本
table.setColumnFamily(colfam1.build());// 将列族添加到表中
admin.createTable(table.build());
admin.close();
conn.close();
}
数据存放
public static void putData() throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
Connection conn = ConnectionFactory.createConnection(conf);
// 获取表名
TableName tableName = TableName.valueOf(Bytes.toBytes("testtable2"));
Table table = conn.getTable(tableName);
Put put = new Put(Bytes.toBytes("row1"));//设置操作的行键
//设置操作的列族 列 列值
put.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("name"), Bytes.toBytes("张三"));
table.put(put);
table.close();
conn.close();
}
数据获取
public static void getData() throws Exception {
//配置并创建连接
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
Connection conn = ConnectionFactory.createConnection(conf);
//获取到操作的hbase表名
TableName tableName = TableName.valueOf("testtable2");
Table table = conn.getTable(tableName);
//设置需要获取数据的行 列族 列
Get row = new Get(Bytes.toBytes("row1"));
Result result = table.get(row);
//对数据进行处理并输出
byte[] value = result.getValue(Bytes.toBytes("colfam1"), Bytes.toBytes("name"));
System.out.println("输出的结果为:"+Bytes.toString(value));
}
数据集获取
public static void getDates() throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
Connection conn = ConnectionFactory.createConnection(conf);
TableName tableName = TableName.valueOf(Bytes.toBytes("testtable2"));
Table table = conn.getTable(tableName);
Scan scan=new Scan(Bytes.toBytes("row1"));
ResultScanner scanner = table.getScanner(scan);
Iterator<Result> it = scanner.iterator();
while(it.hasNext()) {
Result result = it.next();
byte[] value = result.getValue(Bytes.toBytes("colfam1"), Bytes.toBytes("name"));
String str=Bytes.toString(value);
System.out.println("str:"+str);
}
table.close();
conn.close();
}
数据删除
public static void deleteRow() throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(Bytes.toBytes("testtable2")));
Delete delete =new Delete(Bytes.toBytes("row1"));
table.delete(delete);
table.close();
}
删除表操作
public static void deleteTable() throws Exception{
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
Connection conn = ConnectionFactory.createConnection(conf);
TableName tableName = TableName.valueOf(Bytes.toBytes("testtable2"));
Table table = conn.getTable(tableName);
Admin admin = conn.getAdmin();
admin.disableTable(tableName);//在删除表之前,请先将表设置为不可用
admin.deleteTable(tableName);
admin.close();
conn.close();
}