[HBase 基础]-- 增删改查表(包含过滤)

一、简单模式的实现的代码如下

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
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.mapreduce.TableInputFormat;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.security.UserGroupInformation;

/**
 * Document:本类作用---->使用Hbase传统api创建hbase表、查询数据等(测试环境)
 * User: yangjf
 * Date: 2016/8/18  18:31
 * 本地模式
 * 测试通过
 */

public class SimpleHBase {

 public static void main(String[] args)throws Exception {

  System.setProperty("java.security.krb5.conf","F:/krb5.conf");//windows下 ,本地执行需要
  String tableName="greatgas:student";

  Configuration configuration = HBaseConfiguration.create();//创建Hbase连接配置
  configuration.set("hbase.zookeeper.quorum", "slave-31.dev.cluster.enn.cn:2181");
  configuration.set("hbase.rootdir", "hdfs://mycluster/hbase");
  configuration.set("hadoop.security.authentication", "kerberos");
  configuration.set("hbase.security.authentication", "kerberos");
  configuration.set("hbase.security.authorization", "true");
  configuration.set("hbase.master.kerberos.principal", "hbase/_HOST@ENN.CN");
  configuration.set("hbase.thrift.kerberos.principal", "hbase/_HOST@ENN.CN");
  configuration.set("hbase.regionserver.kerberos.principal", "hbase/_HOST@ENN.CN");
  configuration.set("hbase.zookeeper.property.clientPort", "2181");
  configuration.set(TableInputFormat.INPUT_TABLE, tableName);
  configuration.set("hbase.rpc.timeout", "10000");
  configuration.set("hbase.client.retries.number", "5");
  configuration.set("hbase.client.pause", "5000");
  configuration.set("hbase.client.scanner.timeout.period", "50000");
  String user = "e_heyutao@ENN.CN";
  String keyPath = "F:/e_heyutao.keytab";                 //本地测试需要的文件
  UserGroupInformation.setConfiguration(configuration);
  UserGroupInformation.loginUserFromKeytab(user, keyPath);

  //测试创建、添加、获取和删除数据
  System.out.println("建表.......");
  createTable(configuration, tableName);
  System.out.println("添加数据.......");
  addData(configuration, tableName);
  System.out.println("获取数据.......");
  getData(configuration, tableName);
  System.out.println("获取所有数据.......");
  getAllData(configuration, tableName);
  System.out.println("删除数据.......");
  deleteDate(configuration, tableName);
  System.out.println("删除表.......");
  dropTable(configuration, tableName);
  
 }
 
 /**
  * create a new Table
  * @param configuration Configuration
  * @param tableName String,the new Table's name
  * */
 public static void createTable(Configuration configuration,String tableName){
  HBaseAdmin admin;
  try {
   admin = new HBaseAdmin(configuration);
   if(admin.tableExists(tableName)){
    admin.disableTable(tableName);
    admin.deleteTable(tableName);
    System.out.println(tableName+"is exist ,delete ......");
   }
   
   
   HTableDescriptor tableDescriptor=new HTableDescriptor(TableName.valueOf(tableName));
   tableDescriptor.addFamily(new HColumnDescriptor("info"));
   tableDescriptor.addFamily(new HColumnDescriptor("address"));
   admin.createTable(tableDescriptor);
   System.out.println("end create table");
  } catch (MasterNotRunningException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ZooKeeperConnectionException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 
 /**
  * Delete the existing table
  * @param configuration Configuration
  * @param tableName String,Table's name
  * */
 public static void dropTable(Configuration configuration,String tableName){
  HBaseAdmin admin;
  try {
   admin = new HBaseAdmin(configuration);
   if(admin.tableExists(tableName)){
    admin.disableTable(tableName);
    admin.deleteTable(tableName);
    System.out.println(tableName+"delete success!");
   }else{
    System.out.println(tableName+"Table does not exist!");
   }
  } catch (MasterNotRunningException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ZooKeeperConnectionException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 /**
  * insert a data
  * @param configuration Configuration
  * @param tableName String,Table's name
  * */
 public static void addData(Configuration configuration,String tableName){
  HBaseAdmin admin;
  try {
   admin = new HBaseAdmin(configuration);
   if(admin.tableExists(tableName)){
    HTable table=new HTable(configuration, tableName);
    Put put=new Put(Bytes.toBytes("zhangsan"));
    put.add(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("28"));
    table.put(put);
    System.out.println("add success!");
   }else{
    System.out.println(tableName+"Table does not exist!");
   }
  } catch (MasterNotRunningException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ZooKeeperConnectionException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 /**
  * Delete a data
  * @param configuration Configuration
  * @param tableName String,Table's name
  * */
 public static void deleteDate(Configuration configuration,String tableName){
  HBaseAdmin admin;
  try {
   admin=new HBaseAdmin(configuration);
   if(admin.tableExists(tableName)){
    HTable table=new HTable(configuration, tableName);
    Delete delete=new Delete(Bytes.toBytes("zhangsan"));
    table.delete(delete);
    System.out.println("delete success!");
   }else{
    System.out.println("Table does not exist!");
   }
  } catch (MasterNotRunningException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ZooKeeperConnectionException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 

 /**
  * get a data
  * @param configuration Configuration
  * @param tableName String,Table's name
  * */
 public static void getData(Configuration configuration,String tableName){
  HTable table;
  try {
   table = new HTable(configuration, tableName);
   Get get=new Get(Bytes.toBytes("zhangsan"));
   Result result=table.get(get);
 
   for(Cell cell:result.rawCells()){   
    System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" ");
    System.out.println("Timetamp:"+cell.getTimestamp()+" ");
    System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");
    System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");
    System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 /**
  * insert all data
  * @param configuration Configuration
  * @param tableName String,Table's name
  * */
 public static void getAllData(Configuration configuration,String tableName){
  HTable table;
  try {
   table=new HTable(configuration, tableName);
   Scan scan=new Scan();
   ResultScanner results=table.getScanner(scan);
   for(Result result:results){
    for(Cell cell:result.rawCells()){   
     System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" ");
     System.out.println("Timetamp:"+cell.getTimestamp()+" ");
     System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");
     System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");
     System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");
    }
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
    
 }
}

 

二、有接口类和实现类的实现代码如下

 

1、接口类

package local.interfaces;

import java.util.List;

import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;

public interface HBaseDAO {

	public void save(Put put, String tableName) ;
	public void insert(String tableName, String rowKey, String family, String quailifer, String value) ;
	public void insert(String tableName, String rowKey, String family, String quailifer[], String value[]) ;
	
	public void save(List Put, String tableName) ;
	
	public Result getOneRow(String tableName, String rowKey) ;
	
	public List getRows(String tableName, String rowKey_like) ;
	
	public List getRows(String tableName, String rowKeyLike, String cols[]) ;
	
	public List getRows(String tableName, String startRow, String stopRow) ;
	
	public void deleteRecords(String tableName, String rowKeyLike);
	public   void deleteTable(String tableName);
	public   void createTable(String tableName, String[] columnFamilys);
}
 Put, String tableName) ;
	
	public Result getOneRow(String tableName, String rowKey) ;
	
	public List getRows(String tableName, String rowKey_like) ;
	
	public List getRows(String tableName, String rowKeyLike, String cols[]) ;
	
	public List getRows(String tableName, String startRow, String stopRow) ;
	
	public void deleteRecords(String tableName, String rowKeyLike);
	public   void deleteTable(String tableName);
	public   void createTable(String tableName, String[] columnFamilys);
}

 

2、实现类

 

package local.impl;

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

import local.interfaces.HBaseDAO;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
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.HConnection;
import org.apache.hadoop.hbase.client.HConnectionManager;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.HTableInterface;
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.filter.PrefixFilter;
import org.apache.hadoop.hbase.mapreduce.TableInputFormat;
import org.apache.hadoop.security.UserGroupInformation;

/**
 * Document:本类作用---->接口实现类,增删改查
 * User: yangjf
 * Date: 2016/9/18  18:31
 * 本地模式
 * 测试通过
 */

public class HBaseDAOImp implements HBaseDAO {

	HConnection hTablePool = null;

	static Configuration conf =null;
	public HBaseDAOImp()
	{
		System.setProperty("java.security.krb5.conf","F:/krb5.conf");//windows下 ,本地执行需要
		conf = new Configuration();
		String zk_list = "slave-31.dev.cluster.enn.cn:2181";
		conf.set("hbase.zookeeper.quorum", zk_list);

//		conf.set("hbase.zookeeper.quorum", "slave-31.dev.cluster.enn.cn:2181");
		conf.set("hbase.rootdir", "hdfs://mycluster/hbase");
		conf.set("hadoop.security.authentication", "kerberos");
		conf.set("hbase.security.authentication", "kerberos");
		conf.set("hbase.security.authorization", "true");
		conf.set("hbase.master.kerberos.principal", "hbase/_HOST@ENN.CN");
		conf.set("hbase.thrift.kerberos.principal", "hbase/_HOST@ENN.CN");
		conf.set("hbase.regionserver.kerberos.principal", "hbase/_HOST@ENN.CN");
		conf.set("hbase.zookeeper.property.clientPort", "2181");
//		conf.set(TableInputFormat.INPUT_TABLE, tableName);
		conf.set("hbase.rpc.timeout", "10000");
		conf.set("hbase.client.retries.number", "5");
		conf.set("hbase.client.pause", "5000");
		conf.set("hbase.client.scanner.timeout.period", "50000");
		String user = "e_heyutao@ENN.CN";
		String keyPath = "F:/e_heyutao.keytab";                 //本地测试需要的文件
		UserGroupInformation.setConfiguration(conf);

		try {
			UserGroupInformation.loginUserFromKeytab(user, keyPath);

			hTablePool = HConnectionManager.createConnection(conf) ;
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	//main方法测试
	public static void main(String[] args) {
		HBaseDAO dao = new HBaseDAOImp();

//		创建表
		String tableName="greatgas:test";
		String cfs[] = {"cf"};
		dao.createTable(tableName,cfs);

//		存入一条数据
		Put put = new Put("mytest".getBytes());
		put.add("cf".getBytes(), "name".getBytes(), "cai10".getBytes()) ;
		dao.save(put, "greatgas:test") ;

//		插入多列数据
		Put puts = new Put("mytest".getBytes());
		List list = new ArrayList();
		put.add("cf".getBytes(), "addr".getBytes(), "shanghai1".getBytes()) ;
		put.add("cf".getBytes(), "age".getBytes(), "30".getBytes()) ;
		put.add("cf".getBytes(), "tel".getBytes(), "13889891818".getBytes()) ;
		list.add(puts) ;
		dao.save(list, "greatgas:test");

//		插入单行数据
		dao.insert("greatgas:test", "testrow", "cf", "age", "35") ;
		dao.insert("greatgas:test", "testrow", "cf", "cardid", "12312312335") ;
		dao.insert("greatgas:test", "testrow", "cf", "tel", "13512312345") ;

		List list2 = dao.getRows("greatgas:test", "testrow",new String[]{"age"}) ;
		for(Result rs : list2)
		{
			for(Cell cell:rs.rawCells()){
				System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" ");
				System.out.println("Timetamp:"+cell.getTimestamp()+" ");
				System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");
				System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");
				System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");
			}
		}

		Result rs = dao.getOneRow("greatgas:test", "testrow");
		System.out.println(new String(rs.getValue("cf".getBytes(), "age".getBytes())));


	}
	@Override
	public void save(Put put, String tableName) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			table.put(put) ;

		} catch (Exception e) {
			e.printStackTrace() ;
		}finally{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	@Override
	public void insert(String tableName, String rowKey, String family,
					   String quailifer, String value) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			Put put = new Put(rowKey.getBytes());
			put.add(family.getBytes(), quailifer.getBytes(), value.getBytes()) ;
			table.put(put);
		} catch (Exception e) {
			e.printStackTrace();
		}finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	@Override
	public void insert(String tableName,String rowKey,String family,String quailifer[],String value[])
	{
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			Put put = new Put(rowKey.getBytes());
			// 批量添加
			for (int i = 0; i < quailifer.length; i++) {
				String col = quailifer[i];
				String val = value[i];
				put.add(family.getBytes(), col.getBytes(), val.getBytes());
			}
			table.put(put);
		} catch (Exception e) {
			e.printStackTrace();
		}finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	@Override
	public void save(List Put, String tableName) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			table.put(Put) ;
		}
		catch (Exception e) {
			// TODO: handle exception
		}finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}


	@Override
	public Result getOneRow(String tableName, String rowKey) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		Result rsResult = null;
		try {
			table = hTablePool.getTable(tableName) ;
			Get get = new Get(rowKey.getBytes()) ;
			rsResult = table.get(get) ;
		} catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return rsResult;
	}

	@Override
	public List getRows(String tableName, String rowKeyLike) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		List list = null;
		try {
			table = hTablePool.getTable(tableName) ;
			PrefixFilter filter = new PrefixFilter(rowKeyLike.getBytes());
			Scan scan = new Scan();
			scan.setFilter(filter);
			ResultScanner scanner = table.getScanner(scan) ;
			list = new ArrayList() ;
			for (Result rs : scanner) {
				list.add(rs) ;
			}
		} catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return list;
	}

	@Override
	public List getRows(String tableName, String rowKeyLike ,String cols[]) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		List list = null;
		try {
			table = hTablePool.getTable(tableName) ;
			PrefixFilter filter = new PrefixFilter(rowKeyLike.getBytes());
			Scan scan = new Scan();
			for (int i = 0; i < cols.length; i++) {
				scan.addColumn("cf".getBytes(), cols[i].getBytes()) ;
			}
			scan.setFilter(filter);
			ResultScanner scanner = table.getScanner(scan) ;
			list = new ArrayList() ;
			for (Result rs : scanner) {
				list.add(rs) ;
			}
		} catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return list;
	}
	@Override
	public List getRows(String tableName,String startRow,String stopRow)
	{
		HTableInterface table = null;
		List list = null;
		try {
			table = hTablePool.getTable(tableName) ;
			Scan scan = new Scan() ;
			scan.setStartRow(startRow.getBytes()) ;
			scan.setStopRow(stopRow.getBytes()) ;
			ResultScanner scanner = table.getScanner(scan) ;
			list = new ArrayList() ;
			for (Result rsResult : scanner) {
				list.add(rsResult) ;
			}

		}catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return list;
	}

	@Override
	public void deleteRecords(String tableName, String rowKeyLike){
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			PrefixFilter filter = new PrefixFilter(rowKeyLike.getBytes());
			Scan scan = new Scan();
			scan.setFilter(filter);
			ResultScanner scanner = table.getScanner(scan) ;
			List list = new ArrayList() ;
			for (Result rs : scanner) {
				Delete del = new Delete(rs.getRow());
				list.add(del) ;
			}
			table.delete(list);
		}
		catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	public   void createTable(String tableName, String[] columnFamilys){
		try {
			// admin 对象
			HBaseAdmin admin = new HBaseAdmin(conf);
			if (admin.tableExists(tableName)) {
				System.err.println("此表,已存在!");
			} else {
				HTableDescriptor tableDesc = new HTableDescriptor(
						TableName.valueOf(tableName));

				for (String columnFamily : columnFamilys) {
					tableDesc.addFamily(new HColumnDescriptor(columnFamily));
				}

				admin.createTable(tableDesc);
				System.err.println("建表成功!");

			}
			admin.close();// 关闭释放资源
		} catch (MasterNotRunningException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ZooKeeperConnectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * 删除一个表
	 *
	 * @param tableName
	 *            删除的表名
	 * */
	public   void deleteTable(String tableName)   {
		try {
			HBaseAdmin admin = new HBaseAdmin(conf);
			if (admin.tableExists(tableName)) {
				admin.disableTable(tableName);// 禁用表
				admin.deleteTable(tableName);// 删除表
				System.err.println("删除表成功!");
			} else {
				System.err.println("删除的表不存在!");
			}
			admin.close();
		} catch (MasterNotRunningException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ZooKeeperConnectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 查询表中所有行
	 * @param tablename
	 */
	public void scaner(String tablename) {
		try {
			HTable table =new HTable(conf, tablename);
			Scan s =new Scan();
			ResultScanner rs = table.getScanner(s);
			for (Result r : rs) {
				KeyValue[] kv = r.raw();
				for (int i =0; i < kv.length; i++) {
					System.out.print(new String(kv[i].getRow()) +"");
					System.out.print(new String(kv[i].getFamily()) +":");
					System.out.print(new String(kv[i].getQualifier()) +"");
					System.out.print(kv[i].getTimestamp() +"");
					System.out.println(new String(kv[i].getValue()));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


}

 list = new ArrayList();
		put.add("cf".getBytes(), "addr".getBytes(), "shanghai1".getBytes()) ;
		put.add("cf".getBytes(), "age".getBytes(), "30".getBytes()) ;
		put.add("cf".getBytes(), "tel".getBytes(), "13889891818".getBytes()) ;
		list.add(puts) ;
		dao.save(list, "greatgas:test");

//		插入单行数据
		dao.insert("greatgas:test", "testrow", "cf", "age", "35") ;
		dao.insert("greatgas:test", "testrow", "cf", "cardid", "12312312335") ;
		dao.insert("greatgas:test", "testrow", "cf", "tel", "13512312345") ;

		List list2 = dao.getRows("greatgas:test", "testrow",new String[]{"age"}) ;
		for(Result rs : list2)
		{
			for(Cell cell:rs.rawCells()){
				System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" ");
				System.out.println("Timetamp:"+cell.getTimestamp()+" ");
				System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");
				System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");
				System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");
			}
		}

		Result rs = dao.getOneRow("greatgas:test", "testrow");
		System.out.println(new String(rs.getValue("cf".getBytes(), "age".getBytes())));


	}
	@Override
	public void save(Put put, String tableName) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			table.put(put) ;

		} catch (Exception e) {
			e.printStackTrace() ;
		}finally{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	@Override
	public void insert(String tableName, String rowKey, String family,
					   String quailifer, String value) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			Put put = new Put(rowKey.getBytes());
			put.add(family.getBytes(), quailifer.getBytes(), value.getBytes()) ;
			table.put(put);
		} catch (Exception e) {
			e.printStackTrace();
		}finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	@Override
	public void insert(String tableName,String rowKey,String family,String quailifer[],String value[])
	{
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			Put put = new Put(rowKey.getBytes());
			// 批量添加
			for (int i = 0; i < quailifer.length; i++) {
				String col = quailifer[i];
				String val = value[i];
				put.add(family.getBytes(), col.getBytes(), val.getBytes());
			}
			table.put(put);
		} catch (Exception e) {
			e.printStackTrace();
		}finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	@Override
	public void save(List Put, String tableName) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			table.put(Put) ;
		}
		catch (Exception e) {
			// TODO: handle exception
		}finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}


	@Override
	public Result getOneRow(String tableName, String rowKey) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		Result rsResult = null;
		try {
			table = hTablePool.getTable(tableName) ;
			Get get = new Get(rowKey.getBytes()) ;
			rsResult = table.get(get) ;
		} catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return rsResult;
	}

	@Override
	public List getRows(String tableName, String rowKeyLike) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		List list = null;
		try {
			table = hTablePool.getTable(tableName) ;
			PrefixFilter filter = new PrefixFilter(rowKeyLike.getBytes());
			Scan scan = new Scan();
			scan.setFilter(filter);
			ResultScanner scanner = table.getScanner(scan) ;
			list = new ArrayList() ;
			for (Result rs : scanner) {
				list.add(rs) ;
			}
		} catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return list;
	}

	@Override
	public List getRows(String tableName, String rowKeyLike ,String cols[]) {
		// TODO Auto-generated method stub
		HTableInterface table = null;
		List list = null;
		try {
			table = hTablePool.getTable(tableName) ;
			PrefixFilter filter = new PrefixFilter(rowKeyLike.getBytes());
			Scan scan = new Scan();
			for (int i = 0; i < cols.length; i++) {
				scan.addColumn("cf".getBytes(), cols[i].getBytes()) ;
			}
			scan.setFilter(filter);
			ResultScanner scanner = table.getScanner(scan) ;
			list = new ArrayList() ;
			for (Result rs : scanner) {
				list.add(rs) ;
			}
		} catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return list;
	}
	@Override
	public List getRows(String tableName,String startRow,String stopRow)
	{
		HTableInterface table = null;
		List list = null;
		try {
			table = hTablePool.getTable(tableName) ;
			Scan scan = new Scan() ;
			scan.setStartRow(startRow.getBytes()) ;
			scan.setStopRow(stopRow.getBytes()) ;
			ResultScanner scanner = table.getScanner(scan) ;
			list = new ArrayList() ;
			for (Result rsResult : scanner) {
				list.add(rsResult) ;
			}

		}catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return list;
	}

	@Override
	public void deleteRecords(String tableName, String rowKeyLike){
		HTableInterface table = null;
		try {
			table = hTablePool.getTable(tableName) ;
			PrefixFilter filter = new PrefixFilter(rowKeyLike.getBytes());
			Scan scan = new Scan();
			scan.setFilter(filter);
			ResultScanner scanner = table.getScanner(scan) ;
			List list = new ArrayList() ;
			for (Result rs : scanner) {
				Delete del = new Delete(rs.getRow());
				list.add(del) ;
			}
			table.delete(list);
		}
		catch (Exception e) {
			e.printStackTrace() ;
		}
		finally
		{
			try {
				table.close() ;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	public   void createTable(String tableName, String[] columnFamilys){
		try {
			// admin 对象
			HBaseAdmin admin = new HBaseAdmin(conf);
			if (admin.tableExists(tableName)) {
				System.err.println("此表,已存在!");
			} else {
				HTableDescriptor tableDesc = new HTableDescriptor(
						TableName.valueOf(tableName));

				for (String columnFamily : columnFamilys) {
					tableDesc.addFamily(new HColumnDescriptor(columnFamily));
				}

				admin.createTable(tableDesc);
				System.err.println("建表成功!");

			}
			admin.close();// 关闭释放资源
		} catch (MasterNotRunningException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ZooKeeperConnectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * 删除一个表
	 *
	 * @param tableName
	 *            删除的表名
	 * */
	public   void deleteTable(String tableName)   {
		try {
			HBaseAdmin admin = new HBaseAdmin(conf);
			if (admin.tableExists(tableName)) {
				admin.disableTable(tableName);// 禁用表
				admin.deleteTable(tableName);// 删除表
				System.err.println("删除表成功!");
			} else {
				System.err.println("删除的表不存在!");
			}
			admin.close();
		} catch (MasterNotRunningException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ZooKeeperConnectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 查询表中所有行
	 * @param tablename
	 */
	public void scaner(String tablename) {
		try {
			HTable table =new HTable(conf, tablename);
			Scan s =new Scan();
			ResultScanner rs = table.getScanner(s);
			for (Result r : rs) {
				KeyValue[] kv = r.raw();
				for (int i =0; i < kv.length; i++) {
					System.out.print(new String(kv[i].getRow()) +"");
					System.out.print(new String(kv[i].getFamily()) +":");
					System.out.print(new String(kv[i].getQualifier()) +"");
					System.out.print(kv[i].getTimestamp() +"");
					System.out.println(new String(kv[i].getValue()));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


}

以上代码测试通过,可根据需要修改!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oo寻梦in记

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值