HBase API

package com.cxy.hbase;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
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.util.Bytes;

public class Hbase {
	static Configuration conf = null;
	static Connection conn = null;
	static{
		conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "127.0.0.1:2181");
		try {
			conn = ConnectionFactory.createConnection(conf);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * Create table
	 * @throws IOException 
	 */
	public static void createTable(String tableName,String[]family) throws Exception{
		Admin admin = conn.getAdmin();
		HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName));
		for(int i =0;i<family.length;i++){
			desc.addFamily(new HColumnDescriptor(family[i]));
		}
		if(admin.tableExists(TableName.valueOf(tableName))){
			System.out.println("Table Exists");
			System.exit(0);
		}else{
			admin.createTable(desc);
			System.out.println("Create table success!");
		}
	}
	
	/**
	 * Add data
	 */
	public static void addData(String rowKey,String tableName,String[] column1,String[] value1,String[] column2,String[] value2) throws IOException{
		//config ROW_KEY
		Put put = new Put(Bytes.toBytes(rowKey));
		Table table = conn.getTable(TableName.valueOf(tableName));
		HColumnDescriptor[] columnFamilies = table.getTableDescriptor().getColumnFamilies();
		for(int i=0;i<columnFamilies.length;i++){
			//get column_name
			String familyName = columnFamilies[i].getNameAsString();
			if(familyName.equals("article")){
				for(int j=0;j<column1.length;j++){
					put.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(column1[j]), Bytes.toBytes(value1[j]));	
				}
			}
			if(familyName.equals("author")){
				for(int j=0;j<column2.length;j++){
					put.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(column2[j]), Bytes.toBytes(value2[j]));	
				}
			}
		}
		table.put(put);
		System.out.println("Add data success");
	}
	
	/**
	 * queryBy ROW_KEY
	 * @throws IOException 
	 */
	public static Result getResult(String tableName,String rowKey) throws IOException{
		Get get = new Get(Bytes.toBytes(rowKey));
		Table table = conn.getTable(TableName.valueOf(tableName));
		Result result = table.get(get);
		for(Cell cell:result.listCells()){
			System.out.println("family:"+cell.toString());
		}
		return result;	
	}
	
	/**
	 * Scanner table
	 */
	public static void getResultScann(String tableName) throws IOException{
		Scan scan = new Scan();
		ResultScanner rs = null;
		Table table = conn.getTable(TableName.valueOf(tableName));
		rs = table.getScanner(scan);
		for(Result r :rs){
			for(Cell cell:r.listCells()){
				System.out.println("row:"+Bytes.toString(cell.getRowArray(),cell.getRowOffset(),cell.getRowLength()));
				System.out.println("family:"+Bytes.toString(cell.getFamilyArray(),cell.getFamilyOffset(),cell.getValueLength()));
				System.out.println("qualifier:"+Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(),cell.getQualifierLength()));
				System.out.println("value:"+Bytes.toString(cell.getValueArray(),cell.getValueOffset(),cell.getValueLength()));
				System.out.println("timestamp:"+cell.getTimestamp());
				System.out.println("-------------------------------------");
			}
		}
		rs.close();
	}
	
	/**
	 * queryBy column
	 */
	public static void getResultByColumn(String tableName,String rowKey,String familyName,String columnName) throws IOException{
		Table table = conn.getTable(TableName.valueOf(tableName));
		Get get = new Get(Bytes.toBytes(rowKey));
		get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
		Result result = table.get(get);
		for(Cell cell:result.listCells()){
			System.out.println("family:"+Bytes.toString(cell.getFamilyArray(),cell.getFamilyOffset(),cell.getValueLength()));
			System.out.println("qualifier:"+Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(),cell.getQualifierLength()));
			System.out.println("value:"+Bytes.toString(cell.getValueArray(),cell.getValueOffset(),cell.getValueLength()));
			System.out.println("timestamp:"+cell.getTimestamp());
			System.out.println("-------------------------------------");
		}
	}
	
	/**
	 * queryBy cloumn version
	 */
	public static void getResultByVersion(String tableName,String rowKey,String familyName,String columnName) throws IOException{
		Table table = conn.getTable(TableName.valueOf(tableName));
		Get get = new Get(Bytes.toBytes(rowKey));
		get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
		get.setMaxVersions(5);
		Result result = table.get(get);
		for(Cell cell:result.listCells()){
			System.out.println("version:"+cell.getTimestamp());
		}
	}
	
	/**
	 * delete Column
	 */
	public static void deleteColumn(String tableName,String rowKey,String familyName,String columnName) throws IOException{
		Table table = conn.getTable(TableName.valueOf(tableName));
		Delete deleteColumn = new Delete(Bytes.toBytes(rowKey));
		deleteColumn.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
		table.delete(deleteColumn);
		System.out.println(familyName+","+columnName+"is deleted");
	}
	
	/**
	 * delete  rowkey
	 */
	public static void deleteRowKey(String tableName,String rowKey) throws IOException{
		Table table = conn.getTable(TableName.valueOf(tableName));
		Delete deleteAll = new Delete(Bytes.toBytes(rowKey));
		table.delete(deleteAll);
		System.out.println("delete row");
	}
	
	/**
	 * delete table
	 */
	public static void deleteTable(String tableName) throws IOException{
		Admin admin = conn.getAdmin();
		admin.disableTable(TableName.valueOf(tableName));
		admin.deleteTable(TableName.valueOf(tableName));
		System.out.println(tableName+"is deleted");
	}
	public static void main(String[] args) throws Exception {
		//# export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/lib/hbase/lib/*
		//# hadoop jar hbase.jar
		
		//Create table
		/*String tableName = "blog";
		String[] family = {"article","author"};
		createTable(tableName, family);*/	
	
		//Add data
		/*String[] column1 = {"title","content","tag"};
		String[] value1 = {"Head Fist Hbase","Hadoop","HBase"};
		String[] column2 = {"name","nickname"};
		String[] value2 = {"nicholas","lee"};
		addData("rowkey1", "blog", column1, value1, column2, value2);
		addData("rowkey2", "blog", column1, value1, column2, value2);
		addData("rowkey3", "blog", column1, value1, column2, value2);*/
		
		//queryBy ROW_KEY
		/*("blog", "rowkey1");*/
		
		//Scanner table
		/*getResultScann("blog");*/
		
		//queryBy column
		/*getResultByColumn("blog", "rowkey1", "article", "content");*/
		
		//queryBy cloumn version
		/*getResultByVersion("blog", "rowkey1", "article", "content");*/
		
		//delete Column
		/*deleteColumn("blog", "rowkey1", "article", "content");*/
		
		//delete Row
		/*deleteRowKey("blog", "rowkey1");*/
		
		//delete table
		/*deleteTable("blog");*/
		
	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值