HBase API相關操作

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章