hbase学习之二 java api

这里贴一下自己写的调用hbase的java api程序

package cn.itcast_01_hbase;


import java.util.ArrayList;

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.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.HBaseAdmin;
import org.apache.hadoop.hbase.client.HConnection;
import org.apache.hadoop.hbase.client.HConnectionManager;
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.ColumnPrefixFilter;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.FilterList.Operator;
import org.apache.hadoop.hbase.filter.RegexStringComparator;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;


public class HbaseTest {

	/**
	 * 配置ss
	 */
	static Configuration config = null;
	static private Connection connection = null;
	static private Table table = null;

	
	public static void init() throws Exception {
		config = HBaseConfiguration.create();// 配置
		config.set("hbase.zookeeper.quorum", "hadoop01,hadoop02");// zookeeper地址
		config.set("hbase.zookeeper.property.clientPort", "2181");// zookeeper端口
		connection = ConnectionFactory.createConnection(config);
		table = connection.getTable(TableName.valueOf("user"));
	}

	/**
	 * 创建一个表
	 * 
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		init();
//		createTable();
//		deleteTable();
//		insertData();
//		uodateData();
		deleteDate();
//		queryData();
		close();
		
	}
	public static void createTable() throws Exception {
		// 创建表管理类
		HBaseAdmin admin = new HBaseAdmin(config); // hbase表管理
		// 创建表描述类
		TableName tableName = TableName.valueOf("test3"); // 表名称
		HTableDescriptor desc = new HTableDescriptor(tableName);
		// 创建列族的描述类
		HColumnDescriptor family = new HColumnDescriptor("info"); // 列族
		// 将列族添加到表中
		desc.addFamily(family);
		HColumnDescriptor family2 = new HColumnDescriptor("info2"); // 列族
		// 将列族添加到表中
		desc.addFamily(family2);
		// 创建表
		admin.createTable(desc); // 创建表
//		Table table1 = connection.getTable(TableName.valueOf("test3"));
//		Put put = new Put(Bytes.toBytes("second"));
//		put.add(Bytes.toBytes("mesg1"), Bytes.toBytes("name"),Bytes.toBytes("zhangsanfeng"));
//		table1.put(put);
	}

	
	@SuppressWarnings("deprecation")
	public static void deleteTable() throws MasterNotRunningException,
			ZooKeeperConnectionException, Exception {
		HBaseAdmin admin = new HBaseAdmin(config);
		admin.disableTable("test3");
		admin.deleteTable("test3");
		admin.close();
	}

//	/**
//	 * 向hbase中增加数据
//	 * 
//	 * @throws Exception
//	 */
	@SuppressWarnings({ "deprecation", "resource" })
	public static void insertData() throws Exception {
		Put put = new Put(Bytes.toBytes("second"));
		put.add(Bytes.toBytes("info1"), Bytes.toBytes("name"),Bytes.toBytes("zhangsanfeng"));
		put.add(Bytes.toBytes("info2"), Bytes.toBytes("age"),Bytes.toBytes(12));
		table.put(put);
////		table.setAutoFlushTo(false);
////		table.setWriteBufferSize(534534534);
//		ArrayList<Put> arrayList = new ArrayList<Put>();
//		for (int i = 21; i < 50; i++) {
//			Put put = new Put(Bytes.toBytes("1234"+i)); //hbase 提供了一个工具Bytes
//			put.add(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("wangwu"+i));
//			put.add(Bytes.toBytes("info"), Bytes.toBytes("password"), Bytes.toBytes(1234+i));
//			arrayList.add(put);
//		}
//		
//		//插入数据
//		table.put(arrayList);
//		//提交
//		table.flushCommits();
	}
//
//	/**
//	 * 修改数据
//	 * 
//	 * @throws Exception
//	 */
	public static void uodateData() throws Exception {
		Put put = new Put(Bytes.toBytes("second"));
		put.add(Bytes.toBytes("info1"), Bytes.toBytes("name"), Bytes.toBytes("lisi1234"));
//		put.add(Bytes.toBytes("info"), Bytes.toBytes("password"), Bytes.toBytes(1234));
		//插入数据
		table.put(put);
		//提交
		
	}
//
//	/**
//	 * 删除数据
//	 * 
//	 * @throws Exception
//	 */
	public static void deleteDate() throws Exception {
		Delete delete = new Delete(Bytes.toBytes("first"));
		delete.addColumn(Bytes.toBytes("info1"), Bytes.toBytes("name"));
		table.delete(delete);
	}
//
//	/**
//	 * 单条查询
//	 * 
//	 * @throws Exception
//	 */
	public static void queryData() throws Exception {
		Get get = new Get(Bytes.toBytes("second"));
		Result result = table.get(get);
		System.out.println("-----------------------------------------");
		System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info1"), Bytes.toBytes("name"))));
//		System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("namessss"))));
//		System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("sex"))));
	}

//	/**
//	 * 全表扫描
//	 * 
//	 * @throws Exception
//	 */
	public void scanData() throws Exception {
		Scan scan = new Scan();
		//scan.addFamily(Bytes.toBytes("info"));
		//scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("password"));
		scan.setStartRow(Bytes.toBytes("wangsf_0"));
		scan.setStopRow(Bytes.toBytes("wangwu"));
		ResultScanner scanner = table.getScanner(scan);
		for (Result result : scanner) {
			System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password"))));
			System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name"))));
			//System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("password"))));
			//System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name"))));
		}
	}

//	/**
//	 * 全表扫描的过滤器
//	 * 列值过滤器
//	 * 
//	 * @throws Exception
//	 */
//	@Test
//	public void scanDataByFilter1() throws Exception {
//
//		// 创建全表扫描的scan
//		Scan scan = new Scan();
//		//过滤器:列值过滤器
//		SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("info"),
//				Bytes.toBytes("name"), CompareFilter.CompareOp.EQUAL,
//				Bytes.toBytes("zhangsan2"));
//		// 设置过滤器
//		scan.setFilter(filter);
//
//		// 打印结果集
//		ResultScanner scanner = table.getScanner(scan);
//		for (Result result : scanner) {
//			System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password"))));
//			System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name"))));
//			//System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("password"))));
//			//System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name"))));
//		}
//
//	}
//	/**
//	 * rowkey过滤器
//	 * @throws Exception
//	 */
//	@Test
//	public void scanDataByFilter2() throws Exception {
//		
//		// 创建全表扫描的scan
//		Scan scan = new Scan();
//		//匹配rowkey以wangsenfeng开头的
//		RowFilter filter = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator("^12341"));
//		// 设置过滤器
//		scan.setFilter(filter);
//		// 打印结果集
//		ResultScanner scanner = table.getScanner(scan);
//		for (Result result : scanner) {
//			System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password"))));
//			System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name"))));
//			//System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("password"))));
//			//System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name"))));
//		}
//
//		
//	}
//	
//	/**
//	 * 匹配列名前缀
//	 * @throws Exception
//	 */
//	@Test
//	public void scanDataByFilter3() throws Exception {
//		
//		// 创建全表扫描的scan
//		Scan scan = new Scan();
//		//匹配rowkey以wangsenfeng开头的
//		ColumnPrefixFilter filter = new ColumnPrefixFilter(Bytes.toBytes("na"));
//		// 设置过滤器
//		scan.setFilter(filter);
//		// 打印结果集
//		ResultScanner scanner = table.getScanner(scan);
//		for (Result result : scanner) {
//			System.out.println("rowkey:" + Bytes.toString(result.getRow()));
//			System.out.println("info:name:"
//					+ Bytes.toString(result.getValue(Bytes.toBytes("info"),
//							Bytes.toBytes("name"))));
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info"), Bytes.toBytes("age")) != null) {
//				System.out.println("info:age:"
//						+ Bytes.toInt(result.getValue(Bytes.toBytes("info"),
//								Bytes.toBytes("age"))));
//			}
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info"), Bytes.toBytes("sex")) != null) {
//				System.out.println("infi:sex:"
//						+ Bytes.toInt(result.getValue(Bytes.toBytes("info"),
//								Bytes.toBytes("sex"))));
//			}
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name")) != null) {
//				System.out
//				.println("info2:name:"
//						+ Bytes.toString(result.getValue(
//								Bytes.toBytes("info2"),
//								Bytes.toBytes("name"))));
//			}
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("age")) != null) {
//				System.out.println("info2:age:"
//						+ Bytes.toInt(result.getValue(Bytes.toBytes("info2"),
//								Bytes.toBytes("age"))));
//			}
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("sex")) != null) {
//				System.out.println("info2:sex:"
//						+ Bytes.toInt(result.getValue(Bytes.toBytes("info2"),
//								Bytes.toBytes("sex"))));
//			}
//		}
//		
//	}
//	/**
//	 * 过滤器集合
//	 * @throws Exception
//	 */
//	@Test
//	public void scanDataByFilter4() throws Exception {
//		
//		// 创建全表扫描的scan
//		Scan scan = new Scan();
//		//过滤器集合:MUST_PASS_ALL(and),MUST_PASS_ONE(or)
//		FilterList filterList = new FilterList(Operator.MUST_PASS_ONE);
//		//匹配rowkey以wangsenfeng开头的
//		RowFilter filter = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator("^wangsenfeng"));
//		//匹配name的值等于wangsenfeng
//		SingleColumnValueFilter filter2 = new SingleColumnValueFilter(Bytes.toBytes("info"),
//				Bytes.toBytes("name"), CompareFilter.CompareOp.EQUAL,
//				Bytes.toBytes("zhangsan"));
//		filterList.addFilter(filter);
//		filterList.addFilter(filter2);
//		// 设置过滤器
//		scan.setFilter(filterList);
//		// 打印结果集
//		ResultScanner scanner = table.getScanner(scan);
//		for (Result result : scanner) {
//			System.out.println("rowkey:" + Bytes.toString(result.getRow()));
//			System.out.println("info:name:"
//					+ Bytes.toString(result.getValue(Bytes.toBytes("info"),
//							Bytes.toBytes("name"))));
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info"), Bytes.toBytes("age")) != null) {
//				System.out.println("info:age:"
//						+ Bytes.toInt(result.getValue(Bytes.toBytes("info"),
//								Bytes.toBytes("age"))));
//			}
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info"), Bytes.toBytes("sex")) != null) {
//				System.out.println("infi:sex:"
//						+ Bytes.toInt(result.getValue(Bytes.toBytes("info"),
//								Bytes.toBytes("sex"))));
//			}
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name")) != null) {
//				System.out
//				.println("info2:name:"
//						+ Bytes.toString(result.getValue(
//								Bytes.toBytes("info2"),
//								Bytes.toBytes("name"))));
//			}
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("age")) != null) {
//				System.out.println("info2:age:"
//						+ Bytes.toInt(result.getValue(Bytes.toBytes("info2"),
//								Bytes.toBytes("age"))));
//			}
//			// 判断取出来的值是否为空
//			if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("sex")) != null) {
//				System.out.println("info2:sex:"
//						+ Bytes.toInt(result.getValue(Bytes.toBytes("info2"),
//								Bytes.toBytes("sex"))));
//			}
//		}
//		
//	}
//
	
	public static void close() throws Exception {
		table.close();
		connection.close();
	}

}

猜你喜欢

转载自blog.csdn.net/yewakui2253/article/details/80213893