Hbase(六) hbase Java API

一、

几个主要 Hbase API 类和数据模型之间的对应关系:

1、 HBaseAdmin
关系: org.apache.hadoop.hbase.client.HBaseAdmin
作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表,删 除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。

2、 HBaseConfiguration
关系: org.apache.hadoop.hbase.HBaseConfiguration
作用:对 HBase 进行配置

3、 HTableDescriptor
关系: org.apache.hadoop.hbase.HTableDescriptor
作用:包含了表的名字极其对应表的列族

4、 HColumnDescriptor
关系: org.apache.hadoop.hbase.HColumnDescriptor
作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建表或者为表添 加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式。
列族被删除的时候,列族里面的数据也会同时被删除。

5、 HTable
关系: org.apache.hadoop.hbase.client.HTable
作用:可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。

6、 Put
关系: org.apache.hadoop.hbase.client.Put
作用:用来对单个行执行添加操作

7、 Get
关系: org.apache.hadoop.hbase.client.Get
作用:用来获取单个行的相关信息

8、 Result
关系: org.apache.hadoop.hbase.client.Result
作用:存储 Get 或者 Scan 操作后获取表的单行值。使用此类提供的方法可以直接获取值 或者各种 Map 结构( key-value 对)

 二、具体增删改查    代码具体实现:

package HbaseDome;



import java.util.List;

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.KeyValue;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
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.protobuf.generated.ZooKeeperProtos.Table;
import org.apache.hadoop.hbase.util.Bytes;



public class Hbasedome implements HBaseDemoInterface{

	
	static Configuration conf =null;
	private static final String ZKconnect="192.168.123.212:2181,192.168.123.213:2181,192.168.123.214:2181";
	static{
		conf=HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", ZKconnect);
	}
//	static String tableName="student";
//	static String[] family={"lie01","lie02"};
	
	
	public static void main(String[] args) {
		Hbasedome a =new Hbasedome();
		 String tableName="student11";
		 String[] family={"lie01","lie02"};
		try {
			HTableDescriptor htds =new HTableDescriptor(tableName);
			for(int z=0;z<family.length;z++){
				HColumnDescriptor h=new HColumnDescriptor(family[z]);
				htds.addFamily(h);
			}
//			a.descTable("table03");
//			a.createTable(tableName, htds);
//			a.descTable("table03");
//			a.getAllTables();
//			a.createTable(tableName,family);
//			a.getResult("table03", "usr001");
//			a.dropTable("user1");
//			a.getAllTables();
//			a.putData("table03", "usr005", "liezu01", "name", "liu");
//			a.getResult("table03", "usr001");
//			a.getResultScann("table03");
//			a.getResultScann("table03","");
			
			Result result = a.getResult("table03", "usr001");
			System.out.println(result.toString());
			List<Cell> cells = result.listCells();
			for (int i = 0; i < cells.size(); i++) {
				Cell cell = cells.get(i);
				System.out.println(cell.toString());
	//			printCell(cell);
			}
		
//			List<KeyValue> list = result.list();
//			for (int i = 0; i < list.size(); i++) {
//				KeyValue kv = list.get(i);
//				printKeyValye(kv);
//			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		
	}
	public static void printKeyValye(KeyValue kv) {
		System.out.println(Bytes.toString(kv.getRow()) + "\t" + Bytes.toString(kv.getFamily()) + "\t" + Bytes.toString(kv.getQualifier()) + "\t" + Bytes.toString(kv.getValue()) + "\t" + kv.getTimestamp());
	}
	public static void printCell(Cell cell) {
		System.out.println(Bytes.toString(cell.getRow()) + "\t" + Bytes.toString(cell.getFamily()) + "\t" + Bytes.toString(cell.getQualifier()) + "\t" + Bytes.toString(cell.getValue()) + "\t" + cell.getTimestamp());
	}
	//创建表
	@Override
	public void createTable(String tableName, String[] family) throws Exception {
		HBaseAdmin admin=new HBaseAdmin(conf);
		HTableDescriptor desc =new HTableDescriptor(tableName);
		
		for(int i=0;i<family.length;i++){
			desc.addFamily(new HColumnDescriptor(family[i]));
			System.out.println("11111111111"+family[i]);
		}
		if(admin.tableExists(tableName)){
			System.out.println("表已经存在,别瞎输行吗");
//			System.exit(0);
		}else{
			admin.createTable(desc);
			System.out.println("表创建成功");
		}
	}

	//创建表
	@Override
	public void createTable(String tableName, HTableDescriptor htds) throws Exception {
		HBaseAdmin admin=new HBaseAdmin(conf);
		boolean tableExists1 = admin.tableExists(Bytes.toBytes(tableName));
		System.out.println(tableExists1 ? "表已存在" : "表不存在");
		admin.createTable(htds);
		boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));
		System.out.println(tableExists ? "创建表成功" : "创建失败");
	}

	
	@Override
	public void descTable(String tableName) throws Exception {
		HBaseAdmin admin=new HBaseAdmin(conf);
		HTable table=new HTable(conf, tableName);
		HTableDescriptor desc =table.getTableDescriptor();
		HColumnDescriptor[] columnFamilies = desc.getColumnFamilies();
	
		for(HColumnDescriptor t:columnFamilies){
			System.out.println(Bytes.toString(t.getName()));
		}
		
	}

	//// 这种方式是替换该表tableName的所有列簇
	@Override
	public void modifyTable(String tableName) throws Exception {
		HBaseAdmin admin=new HBaseAdmin(conf);
		HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
		htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf3")));
		htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf2")));
		admin.modifyTable(tableName, htd);

		// 删除该表tableName当中的特定的列簇
		// admin.deleteColumn(tableName, "cf3");

		System.out.println("修改成功");
		
	}

	@Override
	public void getAllTables() throws Exception {
		HBaseAdmin admin =new HBaseAdmin(conf);
		
		String[] tableNames = admin.getTableNames();
		for(int i=0;i<tableNames.length;i++){
			System.out.println(tableNames[i]);
		}
	}

	//更新数据  插入数据
	@Override
	public void putData(String tableName, String rowKey, String familyName, String columnName, String value)
			throws Exception {
		HTable htable=new HTable(conf, Bytes.toBytes(tableName));
		Put put=new Put(Bytes.toBytes(rowKey));
		put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), Bytes.toBytes(value));
		htable.put(put);
		
	}

	//为表添加数据
	@Override
	public void addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2,
			String[] value2) throws Exception {
		
		Put put=new Put(Bytes.toBytes(rowKey));
		HTable htable=new HTable(conf, Bytes.toBytes(tableName));
		HColumnDescriptor[] columnFamilies = htable.getTableDescriptor().getColumnFamilies();
		for(int i=0;i<=columnFamilies.length;i++){
			String nameAsString = columnFamilies[i].getNameAsString();
			if(nameAsString.equals("lie01")){
				for(int j=0;j<column1.length;j++){
					put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column1[j]),Bytes.toBytes(value1[j]));
				}
			}
			if(nameAsString.equals("lie02")){
				for(int j=0;j<column2.length;j++){
					put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column2[j]),Bytes.toBytes(value2[j]));
				}
			}
			
		}
		htable.put(put);
		System.out.println("addData ok!");
	}

	//根据rowkey 查询
	@Override
	public Result getResult(String tableName, String rowKey) throws Exception {
		Get get=new Get(Bytes.toBytes(rowKey));
		HTable htable=new HTable(conf, Bytes.toBytes(tableName));
		Result result=htable.get(get);
//		for(KeyValue k:result.list()){
//			System.out.println(Bytes.toString(k.getFamily()));
//			System.out.println(Bytes.toString(k.getQualifier()));
//			System.out.println(Bytes.toString(k.getValue()));
//			System.out.println(k.getTimestamp());
//		}
		return result;
	}

	//查询指定的某列
	@Override
	public Result getResult(String tableName, String rowKey, String familyName, String columnName) throws Exception {
		Get get=new Get(Bytes.toBytes(rowKey));
		HTable htable=new HTable(conf, Bytes.toBytes(tableName));
		get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));
		Result result=htable.get(get);
		for(KeyValue k:result.list()){
			System.out.println(Bytes.toString(k.getFamily()));
			System.out.println(Bytes.toString(k.getQualifier()));
			System.out.println(Bytes.toString(k.getValue()));
			System.out.println(k.getTimestamp());
		}
		return result;
	}

	
	//遍历查询表
	@Override
	public ResultScanner getResultScann(String tableName) throws Exception {
	
		Scan scan=new Scan();
		ResultScanner rs =null;
		HTable htable=new HTable(conf, tableName);
		try{
			rs=htable.getScanner(scan);
			for(Result r: rs){
				for(KeyValue kv:r.list()){
	
					System.out.println(Bytes.toString(kv.getRow()));
					System.out.println(Bytes.toString(kv.getFamily()));
					System.out.println(Bytes.toString(kv.getQualifier()));
					System.out.println(Bytes.toString(kv.getValue()));
					System.out.println(kv.getTimestamp());
				}
			}
		}finally{
			rs.close();
		}
		return rs;
	}

	@Override
	public ResultScanner getResultScann(String tableName, Scan scan) throws Exception {
		
		ResultScanner rs =null;
		HTable htable=new HTable(conf, tableName);
		try{
			rs=htable.getScanner(scan);
			for(Result r: rs){
				for(KeyValue kv:r.list()){
	
					System.out.println(Bytes.toString(kv.getRow()));
					System.out.println(Bytes.toString(kv.getFamily()));
					System.out.println(Bytes.toString(kv.getQualifier()));
					System.out.println(Bytes.toString(kv.getValue()));
					System.out.println(kv.getTimestamp());
				}
			}
		}finally{
			rs.close();
		}		
		return rs;
	}

	//查询表中的某一列
	@Override
	public Result getResultByColumn(String tableName, String rowKey, String familyName, String columnName)
			throws Exception {
		
		
		HTable htable=new HTable(conf, tableName);
		Get get=new Get(Bytes.toBytes(rowKey));
		get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));
		Result result=htable.get(get);
		for(KeyValue kv: result.list()){

			System.out.println(Bytes.toString(kv.getFamily()));
			System.out.println(Bytes.toString(kv.getQualifier()));
			System.out.println(Bytes.toString(kv.getValue()));
			System.out.println(kv.getTimestamp());
			
		}
		return result;
	}

	
	//查询某列数据的某个版本
	@Override
	public Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName,
			int versions) throws Exception {
	
		HTable htable=new HTable(conf, tableName);
		Get get =new Get(Bytes.toBytes(rowKey));
		get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
	    get.setMaxVersions(versions);
	    Result result=htable.get(get);
	    
	    for(KeyValue kv: result.list()){

			System.out.println(Bytes.toString(kv.getFamily()));
			System.out.println(Bytes.toString(kv.getQualifier()));
			System.out.println(Bytes.toString(kv.getValue()));
			System.out.println(kv.getTimestamp());
			
		}

		return result;
	}

    //删除指定某列
	@Override
	public void deleteColumn(String tableName, String rowKey, String falilyName, String columnName) throws Exception {

		HTable htable=new HTable(conf, tableName);
//		Delete delete1=new Delete(Bytes.toBytes(rowKey));
		Delete de =new Delete(Bytes.toBytes(rowKey));
		de.deleteColumn(Bytes.toBytes(falilyName), Bytes.toBytes(columnName));
	    htable.delete(de);
	}

	
	//删除指定的某个rowkey
	@Override
	public void deleteColumn(String tableName, String rowKey) throws Exception {
		HTable htable=new HTable(conf, tableName);

		Delete de =new Delete(Bytes.toBytes(rowKey));
		 htable.delete(de);
		
	}

	//让该表失效
	@Override
	public void disableTable(String tableName) throws Exception {
		HBaseAdmin admin=new HBaseAdmin(conf);
		admin.disableTable(tableName);
		
	}

	//删除表
	@Override
	public void dropTable(String tableName) throws Exception {
		
		HBaseAdmin admin=new HBaseAdmin(conf);
		admin.disableTable(tableName);
		admin.deleteTable(tableName);
		
	}

}

  

  

 

package com.ghgj.hbase.test1610;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

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.KeyValue;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
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.util.Bytes;

public class HBaseAPIDemo1610 implements HBaseDemoInterface {

	private static final String ROWKEY = "p001";
	private static final String ROWKEY2 = "p002";
	private static final String FAMILY1 = "cf1";
	private static final String FAMILY2 = "cf2";
	private static final String KEY = "name";
	private static final String VALUE = "huangbo";

	private static final String TABLE_NAME = "person";
	private static final String[] COLUMN_FAMILY = new String[] { FAMILY1, FAMILY2 };

	static Configuration conf = null;
	static HBaseAdmin admin = null;
	static HTable table = null;

	static {
		try {
			conf = HBaseConfiguration.create();
			conf.set("hbase.zookeeper.quorum", "hadoop03:2181,hadoop04:2181,hadoop05:2181");
			admin = new HBaseAdmin(conf);
			table = new HTable(conf, TABLE_NAME);

		} catch (IOException e) {
			// e.printStackTrace();
			System.out.println("报错");
		}
	}

	public static void main(String[] args) throws Exception {
		HBaseAPIDemo1610 hbase = new HBaseAPIDemo1610();

		// 测试创建表
		hbase.createTable(TABLE_NAME, COLUMN_FAMILY);

		// 测试创建表
		HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(TABLE_NAME));
		for (int i = 0; i < COLUMN_FAMILY.length; i++) {
			HColumnDescriptor cf1 = new HColumnDescriptor(COLUMN_FAMILY[i]);
			htd.addFamily(cf1);
		}
		hbase.createTable(TABLE_NAME, htd);

		// 查看表属性
		hbase.descTable(TABLE_NAME);

		// 查询所有的表
		hbase.getAllTables();

		// 测试修改表
		hbase.modifyTable(TABLE_NAME);

		// 插入数据
		hbase.putData(TABLE_NAME, ROWKEY, FAMILY1, KEY, VALUE);

		// 测试插入一堆数据
		String[] column1 = new String[] { "name1", "age", "province" };
		String[] value1 = new String[] { "huangbo", "33", "xinjiang" };
		String[] column2 = new String[] { "gender" };
		String[] value2 = new String[] { "male" };
		hbase.addData(TABLE_NAME, ROWKEY2, column1, value1, column2, value2);

		// 通过rowkey查询数据
		Result result = hbase.getResult(TABLE_NAME, ROWKEY2);
		System.out.println(result.toString());
		List<KeyValue> list = result.list();
		for (int i = 0; i < list.size(); i++) {
			KeyValue kv = list.get(i);
			printKeyValye(kv);
		}

		// 通过rowkey, family, province查询数据
		Result result1 = hbase.getResult(TABLE_NAME, ROWKEY2, FAMILY1, "province");
		List<Cell> cells = result1.listCells();
		for (int i = 0; i < cells.size(); i++) {
			Cell cell = cells.get(i);
			printCell(cell);
		}

		// 扫描全表数据
		ResultScanner resultScann = hbase.getResultScann(TABLE_NAME);
		printResultScanner(resultScann);
		
		/*Iterator<Result> iterator = resultScann.iterator();
		while(iterator.hasNext()){
			Result next = iterator.next();
		}*/

		// 通过scan扫描全表数据,scan中可以加入一些过滤条件
		Scan scan = new Scan();
		scan.setStartRow(Bytes.toBytes("user"));
		scan.setStopRow(Bytes.toBytes("zk002"));
		scan.setTimeRange(1488252774189l, 1488252774191l);
		ResultScanner resultScann1 = hbase.getResultScann(TABLE_NAME, scan);
		printResultScanner(resultScann1);

		// 两种方式查询最大版本数的hbase数据
		Result resultByVersion = hbase.getResultByVersion(TABLE_NAME, ROWKEY, FAMILY1, "name", 3);
		printResult(resultByVersion);
		System.out.println("-------------------");
		ResultScanner rs = hbase.getResultByVersion(ROWKEY, FAMILY1, "name", 3);
		printResultScanner(rs);

		// 删除表
		hbase.dropTable(TABLE_NAME);
	}

	public static void printResultScanner(ResultScanner resultScann) {
		for (Result result : resultScann) {
			printResult(result);
		}
	}

	public static void printResult(Result result) {
		List<Cell> cells = result.listCells();
		for (int i = 0; i < cells.size(); i++) {
			Cell cell = cells.get(i);
			printCell(cell);
		}
	}

	public static void printCell(Cell cell) {
		System.out.println(Bytes.toString(cell.getRow()) + "\t" + Bytes.toString(cell.getFamily()) + "\t" + Bytes.toString(cell.getQualifier()) + "\t" + Bytes.toString(cell.getValue()) + "\t" + cell.getTimestamp());
	}

	public static void printKeyValye(KeyValue kv) {
		System.out.println(Bytes.toString(kv.getRow()) + "\t" + Bytes.toString(kv.getFamily()) + "\t" + Bytes.toString(kv.getQualifier()) + "\t" + Bytes.toString(kv.getValue()) + "\t" + kv.getTimestamp());
	}

	// create 'tablename','cf1','cf2'
	@Override
	public void createTable(String tableName, String[] family) throws Exception {
		HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
		for (int i = 0; i < family.length; i++) {
			HColumnDescriptor cf1 = new HColumnDescriptor(family[i]);
			htd.addFamily(cf1);
		}
		admin.createTable(htd);
		boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));
		System.out.println(tableExists ? "创建表成功" : "创建失败");
	}

	@Override
	public void createTable(String tableName, HTableDescriptor htd) throws Exception {
		admin.createTable(htd);
		boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));
		System.out.println(tableExists ? "创建表成功" : "创建失败");
	}

	// desc 'person'
	@Override
	public void descTable(String tableName) throws Exception {
		HTableDescriptor tableDescriptor = table.getTableDescriptor();
		HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();
		for (HColumnDescriptor hcd : columnFamilies) {
			// System.out.println(hcd.toString()+"\t");
			System.out.println(Bytes.toString(hcd.getName()));
		}
	}

	@Override
	public void modifyTable(String tableName) throws Exception {
		// 这种方式是替换该表tableName的所有列簇
		HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
		htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf3")));
		htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf2")));
		admin.modifyTable(tableName, htd);

		// 删除该表tableName当中的特定的列簇
		// admin.deleteColumn(tableName, "cf3");

		System.out.println("修改成功");
	}

	// list
	@Override
	public void getAllTables() throws Exception {
		TableName[] listTableNames = admin.listTableNames();
		for (TableName tn : listTableNames) {
			System.out.println(tn.toString());
		}
	}

	// put 'tablename','rowkey','familyname:key','value'
	@Override
	public void putData(String tableName, String rowKey, String familyName, String columnName, String value) throws Exception {
		// HTable table = new HTable(conf, tableName);
		Put put = new Put(Bytes.toBytes(rowKey));
		put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), Bytes.toBytes(value));
		table.put(put);
		System.out.println("插入成功");
	}

	/**
	 * @param tableName
	 *            表名
	 * @param rowKey
	 *            rowkey
	 * @param column1
	 *            第一个列簇的key数组
	 * @param value1
	 *            第一个列簇的value数组,key数组和value数组长度必须一样
	 * @param column2
	 *            第二列簇的key数组
	 * @param value2
	 *            第二个列簇的values数组, 同上同理
	 * @throws Exception
	 */
	@Override
	public void addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2, String[] value2) throws Exception {
		List<Put> puts = new ArrayList<Put>();

		for (int i = 0; i < column1.length; i++) {
			Put put = new Put(Bytes.toBytes(rowKey));
			put.add(Bytes.toBytes(FAMILY1), Bytes.toBytes(column1[i]), Bytes.toBytes(value1[i]));
			puts.add(put);
		}

		for (int i = 0; i < column2.length; i++) {
			Put put = new Put(Bytes.toBytes(rowKey));
			put.add(Bytes.toBytes(FAMILY2), Bytes.toBytes(column2[i]), Bytes.toBytes(value2[i]));
			puts.add(put);
		}

		table.put(puts);
		System.out.println("插入一堆数据成功");
	}

	// get 'tablename','rowkey'
	@Override
	public Result getResult(String tableName, String rowKey) throws Exception {
		Get get = new Get(Bytes.toBytes(rowKey));
		Result result = table.get(get);
		return result;
	}

	@Override
	public Result getResult(String tableName, String rowKey, String familyName, String columnName) throws Exception {
		Get get = new Get(Bytes.toBytes(rowKey));
		get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
		Result result = table.get(get);
		return result;
	}

	@Override
	public ResultScanner getResultScann(String tableName) throws Exception {
		Scan scan = new Scan();
		ResultScanner scanner = table.getScanner(scan);
		// ResultScanner scanner = table.getScanner(Bytes.toBytes(FAMILY2));
		// ResultScanner scanner = table.getScanner(Bytes.toBytes(FAMILY1),
		// Bytes.toBytes("name1"));
		return scanner;
	}

	@Override
	public ResultScanner getResultScann(String tableName, Scan scan) throws Exception {
		return table.getScanner(scan);
	}

	@Override
	public Result getResultByColumn(String tableName, String rowKey, String familyName, String columnName) throws Exception {
		return null;
	}

	// get 'person','p001',{COLUMNS => 'cf1:name', VERSIONS => 3}
	@Override
	public Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName, int versions) throws Exception {
		Get get = new Get(Bytes.toBytes(rowKey));
		get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
		get.setMaxVersions(versions);
		Result result = table.get(get);
		return result;
	}

	public ResultScanner getResultByVersion(String rowKey, String familyName, String columnName, int versions) throws Exception {
		Scan scan = new Scan(Bytes.toBytes(rowKey), Bytes.toBytes(rowKey));
		scan.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
		scan.setMaxVersions(versions);
		ResultScanner scanner = table.getScanner(scan);
		return scanner;
	}

	@Override
	public void deleteColumn(String tableName, String rowKey, String falilyName, String columnName) throws Exception {

	}

	@Override
	public void deleteColumn(String tableName, String rowKey) throws Exception {

	}

	@Override
	public void disableTable(String tableName) throws Exception {
		admin.disableTable(tableName);
	}

	@Override
	public void dropTable(String tableName) throws Exception {
		try {
			admin.deleteTable(tableName);
		} catch (Exception e) {
			// e.printStackTrace();
			disableTable(tableName);
			admin.deleteTable(tableName);
			System.out.println("ssssssss");
		} finally {
			boolean tableExists = admin.tableExists(Bytes.toBytes(tableName));
			System.out.println(tableExists ? "删除失败" : "删除成功");
		}
	}
}

  

 

   

posted @ 2017-05-11 20:13  凌-风  阅读(49877)  评论(0编辑  收藏