HBase常用操作-HBaseUtil

package com.test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.Map.Entry;

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.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
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.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.PageFilter;
import org.apache.hadoop.hbase.filter.QualifierFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;


public class HBaseUtil {
	@Value("${hbase.zookeeper.quorum}")
	private  String addr="node233,node232,node231";
	
	@Value("${hbase.zookeeper.property.clientPort}")
	private  String port="2181";
	
	
	Logger logger = Logger.getLogger(getClass());

	private static Connection connection;
	
	@SuppressWarnings("static-access")
	public void getConnection(){
		Configuration conf = HBaseConfiguration.create();

		conf.set("hbase.zookeeper.quorum",addr);
		conf.set("hbase.zookeeper.property.clientPort", port);
		//conf.set("zookeeper.znode.parent", "/hbase-unsecure");
		HBaseHelper hBaseHelper = new HBaseHelper(conf);
		try {
			this.connection = hBaseHelper.getConnection();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public HBaseUtil() {
		getConnection();
	}
	
	public static void insert() throws IOException {
		Map<String, Map<String, String>> dataMap = new HashMap<>();
		String basicTag1 = "14";
		String basicTag2 = "15";
		String basicTag3 = "18";
		String basicTag4 = "21";
		
		String mergeTag1 = "23";
		
		Map<String, String> tagMap1 = new HashMap<>();
		tagMap1.put("basictag-"+basicTag1, basicTag1);
		tagMap1.put("basictag-"+basicTag2, basicTag2);
		tagMap1.put("basictag-"+basicTag3, basicTag3);
		tagMap1.put("basictag-"+basicTag4, basicTag4);
		tagMap1.put("mergetag-"+mergeTag1, mergeTag1);
		Map<String, String> userMap1 = new HashMap<>();
		userMap1.put("name", "张三");
		userMap1.put("idnum", "420922199008174270");
		userMap1.put("phonenum", "15810469847");
		userMap1.put("banknum", "6217002710000684874");
		userMap1.put("gender", "1");
		userMap1.put("qq", "847594757");
		userMap1.put("email", "[email protected]");
		userMap1.put("type", "0");
		String rowKey1 = UUID.randomUUID().toString();
		dataMap.put(rowKey1+"_personOrObjInfo", userMap1);
		dataMap.put(rowKey1+"_tag", tagMap1);
		
		Map<String, String> tagMap2 = new HashMap<>();
		tagMap2.put("basictag-"+basicTag1, basicTag1);
		tagMap2.put("basictag-"+basicTag2, basicTag2);
		tagMap2.put("basictag-"+basicTag3, basicTag3);
		tagMap2.put("basictag-"+basicTag4, basicTag4);
		tagMap2.put("mergetag-"+mergeTag1, mergeTag1);
		Map<String, String> userMap2 = new HashMap<>();
		userMap2.put("name", "李四");
		userMap2.put("idnum", "420922199008174271");
		userMap2.put("phonenum", "15810469848");
		userMap2.put("banknum", "6217002710000684875");
		userMap2.put("gender", "1");
		userMap2.put("qq", "847594758");
		userMap2.put("email", "[email protected]");
		userMap2.put("type", "0");
		String rowKey2 = UUID.randomUUID().toString();
		dataMap.put(rowKey2+"_personOrObjInfo", userMap2);
		dataMap.put(rowKey2+"_tag", tagMap2);
		
		Map<String, String> tagMap3 = new HashMap<>();
		tagMap3.put("basictag-"+basicTag1, basicTag1);
		tagMap3.put("basictag-"+basicTag2, basicTag2);
		tagMap3.put("basictag-"+basicTag3, basicTag3);
		tagMap3.put("basictag-"+basicTag4, basicTag4);
		tagMap3.put("mergetag-"+mergeTag1, mergeTag1);
		Map<String, String> userMap3 = new HashMap<>();
		userMap3.put("name", "王五");
		userMap3.put("idnum", "420922199008174272");
		userMap3.put("phonenum", "15810469849");
		userMap3.put("banknum", "6217002710000684876");
		userMap3.put("gender", "1");
		userMap3.put("qq", "847594759");
		userMap3.put("email", "[email protected]");
		userMap3.put("type", "0");
		String rowKey3 = UUID.randomUUID().toString();
		dataMap.put(rowKey3+"_personOrObjInfo", userMap3);
		dataMap.put(rowKey3+"_tag", tagMap3);
		
		addRows("portrait", "_", dataMap);
		
	}
	
	public static void delete() throws IOException {
		
		 Collection<Map<String, String>> a =  queryForQuilfier("portrait","personOrObjInfo", "basictag-14", "14");
	        for (Map<String, String> map : a) {
        		System.out.println("====="+map.get("rowKey"));
        		deleteByRowKey("portrait",map.get("rowKey"));
			}
	}
	
	public static void main(String[] args) throws IOException {
		List<String> result = HBaseUtil.queryForQuilfierName("portrait","tag","basictag-14", 5);
		System.out.println(result);
		 delete();
		 insert();
	}
	

	/*
	 * 判断表是否存在
	 * 
	 * 
	 * @tableName 表名
	 */

	public boolean isExist(String tableName) throws IOException {
		TableName table_name = TableName.valueOf(tableName);
		Admin admin = connection.getAdmin();
		boolean exit = admin.tableExists(table_name);
		admin.close();
		return exit;
	}
	
	/**
	 * 单行添加
	 * @param tableName
	 * @param rowKey
	 * @param family
	 * @param keyValue
	 * @throws IOException
	 */
	@SuppressWarnings("unused")
	private static void addRow(String tableName, String rowKey, String family, Map<String, String> keyValue) throws IOException {
		Table table = connection.getTable(TableName.valueOf(tableName));
		Put put = new Put(Bytes.toBytes(rowKey));
		for (Entry<String, String> entry : keyValue.entrySet()) {
			put.addColumn(Bytes.toBytes(family), Bytes.toBytes(entry.getKey()), Bytes.toBytes(entry.getValue()));
		}
		table.put(put);
		table.close();
		keyValue.clear();
	}
	
	
	public static void addRows(String tableName, String rowFamilySeparator, Map<String, Map<String, String>> keyValues) throws IOException {
		Table table = connection.getTable(TableName.valueOf(tableName));
		List<Put> puts = new ArrayList<Put>();
		for (Entry<String, Map<String, String>> entry : keyValues.entrySet()) {
			String key = entry.getKey();
			if (null == rowFamilySeparator || rowFamilySeparator.isEmpty()) {
				rowFamilySeparator = "_";
			}
			String rowKey = key.split(rowFamilySeparator)[0];
			String family = key.split(rowFamilySeparator)[1];
			Map<String, String> keyValue = entry.getValue();
			Put put = new Put(Bytes.toBytes(rowKey), System.currentTimeMillis());
			for (Entry<String, String> entry2 : keyValue.entrySet()) {
				put.addColumn(Bytes.toBytes(family), Bytes.toBytes(entry2.getKey()), Bytes.toBytes(entry2.getValue()));				
			}
			puts.add(put);
		}
		table.put(puts);
		table.close();
		keyValues.clear();
	}
	
	/**
	 * 单行删除
	 * @param tableName
	 * @param rowKey
	 * @param family
	 * @throws IOException
	 */
	public static void deleteByRowKey(String tableName, String rowKey) throws IOException {
		Table table = connection.getTable(TableName.valueOf(tableName));
		Delete delete = new Delete(Bytes.toBytes(rowKey)); 
		table.delete(delete);
		table.close();
	}

	/**
	 * 查询所有
	 * @param tableName
	 * @param family
	 * @return
	 * @throws IOException
	 */
	public static List<Map<String, String>> queryForScan(String tableName, String family) throws IOException {
		List<Map<String, String>> rows = new ArrayList<Map<String, String>>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		scan.addFamily(Bytes.toBytes(family));
		ResultScanner rs = table.getScanner(scan);
		Map<String, String> row = null;
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				row = new HashMap<String, String>();
				for (Cell cell : cells) {
					row.put(new String(CellUtil.cloneQualifier(cell)), new String(CellUtil.cloneValue(cell)));
				}
				rows.add(row);
			}
		} finally {
			rs.close();
		}
		return rows;
	}
	
	/**
	 * 查询所有rowKey
	 * @param tableName
	 * @return
	 * @throws IOException
	 */
	public static List<String> queryAllRowKeyForScan(String tableName) throws IOException {
		List<String> result = new ArrayList<>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		ResultScanner rs = table.getScanner(scan);
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				if (null == cells || cells.length <= 0) {
					continue;
				}
				Cell cell = cells[0];
				String rowKey = new String(CellUtil.cloneRow(cell));
				result.add(rowKey);
			}
		} finally {
			rs.close();
		}
		return result;
	}
	
	/**
	 * 查询所有字段
	 * @param tableName
	 * @return
	 * @throws IOException
	 */
	public static List<Map<String, String>> queryForScan(String tableName) throws IOException {
		List<Map<String, String>> rows = new ArrayList<Map<String, String>>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		ResultScanner rs = table.getScanner(scan);
		Map<String, String> row = null;
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				row = new HashMap<String, String>();
				for (Cell cell : cells) {
					row.put("rowKey", new String(CellUtil.cloneRow(cell)));
					row.put("family", new String(CellUtil.cloneFamily(cell)));
					row.put(new String(CellUtil.cloneQualifier(cell)), new String(CellUtil.cloneValue(cell)));
				}
				rows.add(row);
			}
		} finally {
			rs.close();
		}
		return rows;
	}
	
	/**
	 * 根据时间范围
	 * @param tableName
	 * @param family
	 * @param minStamp
	 * @param maxStamp
	 * @return
	 * @throws IOException
	 */
	public static List<Map<String, String>> queryForTimeRange(String tableName, String family, long minStamp, long maxStamp) throws IOException {
		List<Map<String, String>> rows = new ArrayList<Map<String, String>>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		scan.addFamily(Bytes.toBytes(family));
		scan.setTimeRange(minStamp, maxStamp);
		ResultScanner rs = table.getScanner(scan);
		Map<String, String> row = null;
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				row = new HashMap<String, String>();
				for (Cell cell : cells) {
					row.put(new String(CellUtil.cloneQualifier(cell)), new String(CellUtil.cloneValue(cell)));
				}
				rows.add(row);
			}
		} finally {
			rs.close();
		}
		return rows;
	}

	/**
	 * 根据RowKey查询
	 * @param tableName
	 * @param rowKey
	 * @param family
	 * @return
	 * @throws IOException
	 */
	public static Map<String, String> queryForRowKey(String tableName, String rowKey, String family) throws IOException {
		Table table = connection.getTable(TableName.valueOf(tableName));
		Get get = new Get(Bytes.toBytes(rowKey));
		get.addFamily(Bytes.toBytes(family));
		Scan scan = new Scan(get);
		ResultScanner rs = table.getScanner(scan);
		Map<String, String> row = null;
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				row = new HashMap<String, String>();
				for (Cell cell : cells) {
					row.put(new String(CellUtil.cloneQualifier(cell)), new String(CellUtil.cloneValue(cell),"UTF-8"));
				}
			}
		} finally {
			rs.close();
		}
		return row;
	}
	
	/**
	 * 根据多个RowKey查询
	 * @param tableName
	 * @param rowKeys
	 * @param family
	 * @return
	 * @throws IOException
	 */
	public static List<Map<String, String>> queryForRowKeys(String tableName, List<String> rowKeys, String family) throws IOException {
		List<Map<String, String>> resultList = new ArrayList<>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		List<Get> getList = new ArrayList();
		for (String rowKey : rowKeys) {
			Get get = new Get(Bytes.toBytes(rowKey));
			get.addFamily(Bytes.toBytes(family));
			getList.add(get);
		}
		Result[] results = table.get(getList);
		for (Result result : results){//对返回的结果集进行操作  
			Map<String, String> row = new HashMap<String, String>();
	        for (Cell kv : result.rawCells()) { 
	            row.put(new String(CellUtil.cloneQualifier(kv)), new String(CellUtil.cloneValue(kv),"UTF-8"));
	        }
	        resultList.add(row);
	    }  
		return resultList;
	}
	
	/**
	 * 根据RowKey范围查询
	 * @param tableName
	 * @param family
	 * @param startRow
	 * @param stopRow
	 * @return
	 * @throws IOException
	 */
	public static List<Map<String, String>> queryForRowKeyRange(String tableName, String family, String startRow, String stopRow) throws IOException {
		List<Map<String, String>> rows = new ArrayList<Map<String, String>>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		scan.addFamily(Bytes.toBytes(family));
		scan.setStartRow(Bytes.toBytes(startRow));
		scan.setStopRow(Bytes.toBytes(stopRow));
		ResultScanner rs = table.getScanner(scan);
		Map<String, String> row = null;
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				row = new HashMap<String, String>();
				for (Cell cell : cells) {
					row.put("timestamp", cell.getTimestamp() + "");
					row.put("rowKey", new String(CellUtil.cloneRow(cell)));
					row.put("family", new String(CellUtil.cloneFamily(cell)));
					row.put(new String(CellUtil.cloneQualifier(cell)), new String(CellUtil.cloneValue(cell)));
				}
				rows.add(row);
			}
		} finally {
			rs.close();
		}
		return rows;
	}
	
	/**
	 * 根据指定列名匹配列值
	 * @param tableName
	 * @param family
	 * @param qualifier
	 * @param value
	 * @return
	 * @throws IOException
	 */
	public static Collection<Map<String, String>> queryForQuilfier(String tableName, String family, String column, String value) throws IOException {
		Map<String, Map<String, String>> rows = new HashMap<String, Map<String, String>>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		SubstringComparator comp = new SubstringComparator(value);
	    SingleColumnValueFilter filter = new SingleColumnValueFilter(family.getBytes(), column.getBytes(), CompareOp.EQUAL, comp);
		filter.setFilterIfMissing(true); 
		PageFilter p = new PageFilter(5);
		scan.setFilter(filter);
		scan.setFilter(p);
		ResultScanner rs = table.getScanner(scan);
		Map<String, String> row = null;
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				for (Cell cell : cells) {
					String rowKey = new String(CellUtil.cloneRow(cell));
					if (null == row || !rows.containsKey(rowKey)) {
						row = new HashMap<String, String>();
					}
					row.put("timestamp", cell.getTimestamp() + "");
					row.put("rowKey", rowKey);
					row.put("family", new String(CellUtil.cloneFamily(cell)));
					row.put(new String(CellUtil.cloneQualifier(cell)), new String(CellUtil.cloneValue(cell),"UTF-8"));
					rows.put(rowKey,row);
				}
			}
		} finally {
			rs.close();
		}
		return rows.values();
	}
	
	/**
	 * 根据指定列名完全匹配列值
	 * @param tableName
	 * @param family
	 * @param qualifier
	 * @param value
	 * @return
	 * @throws IOException
	 */
	public static Collection<Map<String, String>> queryForQuilfierExactly(String tableName, String family, String column, String value) throws IOException {
		Map<String, Map<String, String>> rows = new HashMap<String, Map<String, String>>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
	    SingleColumnValueFilter filter = new SingleColumnValueFilter(family.getBytes(), column.getBytes(), CompareOp.EQUAL,value.getBytes());
	    filter.setFilterIfMissing(true); 
		scan.setFilter(filter);
		ResultScanner rs = table.getScanner(scan);
		Map<String, String> row = null;
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				for (Cell cell : cells) {
					String rowKey = new String(CellUtil.cloneRow(cell));
					if (null == row || !rows.containsKey(rowKey)) {
						row = new HashMap<String, String>();
					}
					row.put("timestamp", cell.getTimestamp() + "");
					row.put("rowKey", rowKey);
					row.put("family", new String(CellUtil.cloneFamily(cell)));
					row.put(new String(CellUtil.cloneQualifier(cell)), new String(CellUtil.cloneValue(cell),"UTF-8"));
					rows.put(rowKey,row);
				}
			}
		} finally {
			rs.close();
		}
		return rows.values();
	}
	
	/**
	 * 获取列名匹配的rowkey
	 * @param tableName
	 * @param qualifier 列名
	 * @param pageSize 数量
	 * @return
	 * @throws IOException
	 */
	public static List<String> queryForQuilfierName(String tableName, String qualifier, long pageSize) throws IOException {
		Set<String> rowKeys = new HashSet<>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		Filter filter = new QualifierFilter(CompareOp.EQUAL,new BinaryComparator(Bytes.toBytes(qualifier)));
		PageFilter pageFilter = new PageFilter(pageSize);
		FilterList filterList = new FilterList();
		filterList.addFilter(filter);
		filterList.addFilter(pageFilter);
		scan.setFilter(filterList);
		ResultScanner rs = table.getScanner(scan);
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				for (Cell cell : cells) {
					String rowKey = new String(CellUtil.cloneRow(cell));
					rowKeys.add(rowKey);
				}
			}
		} finally {
			rs.close();
		}
		List<String> rows = new ArrayList<>(rowKeys);
		return rows;
	}
	
	/**
	 * 获取多个列值匹配的rowkey
	 * @param tableName
	 * @param family
	 * @param qualifierMap 列名:列值
	 * @param pageSize 数量
	 * @return
	 * @throws IOException
	 */
	public static List<String> queryForMultiQuilfierName(String tableName, String family, Map<String, String> qualifierMap, long pageSize) throws IOException {
		Set<String> rowKeys = new HashSet<>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
		for (Entry<String, String> entry : qualifierMap.entrySet()) {
			SingleColumnValueFilter filter = new SingleColumnValueFilter(family.getBytes(), entry.getKey().getBytes(), CompareOp.EQUAL,entry.getValue().getBytes());
			filter.setFilterIfMissing(true); 
			filterList.addFilter(filter);
		}
		PageFilter pageFilter = new PageFilter(pageSize);
		filterList.addFilter(pageFilter);
		scan.setFilter(filterList);
		scan.addFamily(Bytes.toBytes(family));
		ResultScanner rs = table.getScanner(scan);
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				for (Cell cell : cells) {
					String rowKey = new String(CellUtil.cloneRow(cell));
					rowKeys.add(rowKey);
				}
			}
		} finally {
			rs.close();
		}
		List<String> rows = new ArrayList<>(rowKeys);
		return rows;
	}
	
    public static void qualifierFilter() throws IOException {
        Table mTable = connection.getTable(TableName.valueOf("portrait"));
        QualifierFilter columnsNameFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator("basictag-14".getBytes()));
        Scan scan = new Scan();
        scan.setFilter(columnsNameFilter);
        ResultScanner rs = mTable.getScanner(scan);
        for (Result r = rs.next(); r != null; r = rs.next()) {
			Cell[] cells = r.rawCells();
			for (Cell cell : cells) {
				System.out.println("==== "+new String(CellUtil.cloneRow(cell))+"\t"+
						new String(CellUtil.cloneFamily(cell))+"\t"+
						new String(CellUtil.cloneQualifier(cell))+"\t"+
						new String(CellUtil.cloneValue(cell)));
			}
		}
    }
	
	/**
	 * 获取列名匹配的rowkey
	 * @param tableName
	 * @param qualifier 列名
	 * @param pageSize 数量
	 * @return
	 * @throws IOException
	 */
	public static List<String> queryForQuilfierName(String tableName, String family, String qualifier, long pageSize) throws IOException {
		Set<String> rowKeys = new HashSet<>();
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		Filter qualifierFilter = new QualifierFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator(qualifier.getBytes()));
		PageFilter pageFilter = new PageFilter(pageSize);
		FilterList list = new FilterList();
		list.addFilter(pageFilter);
		list.addFilter(qualifierFilter);
		scan.addFamily(Bytes.toBytes(family));
		scan.setFilter(list);
		System.out.println(scan.toJSON());
		ResultScanner rs = table.getScanner(scan);
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				Cell[] cells = r.rawCells();
				for (Cell cell : cells) {
					System.out.println("==== "+new String(CellUtil.cloneRow(cell))+"\t"+
							new String(CellUtil.cloneFamily(cell))+"\t"+
							new String(CellUtil.cloneQualifier(cell))+"\t"+
							new String(CellUtil.cloneValue(cell)));
					String rowKey = new String(CellUtil.cloneRow(cell));
					rowKeys.add(rowKey);
				}
			}
		} finally {
			rs.close();
		}
		List<String> rows = new ArrayList<>(rowKeys);
		return rows;
	}
	
	/**
	 * 根据指定列名匹配列值条数
	 * @param tableName
	 * @param family
	 * @param qualifier
	 * @param value
	 * @return
	 * @throws IOException
	 */
	public static long queryForQuilfierCount(String tableName, String family, String column, String value) throws IOException {
		Table table = connection.getTable(TableName.valueOf(tableName));
		Scan scan = new Scan();
		SubstringComparator comp = new SubstringComparator(value);
	    SingleColumnValueFilter filter = new SingleColumnValueFilter(family.getBytes(), column.getBytes(), CompareOp.EQUAL, comp);
		filter.setFilterIfMissing(true); 
		scan.setFilter(filter);
		ResultScanner rs = table.getScanner(scan);
		long count = 0;
		try {
			for (Result r = rs.next(); r != null; r = rs.next()) {
				count++;
			}
		} finally {
			rs.close();
		}
		return count;
	}
	
	/*
	 * 关闭连接
	 *
	 */
	public void close() {
		/**
		 * close connection
		 **/
		if (connection != null) {
			try {
				connection.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
}

  

猜你喜欢

转载自www.cnblogs.com/EnzoDin/p/9205839.html