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();
}