scan 扫描数据 put 插入数据

本文深入探讨了HBase数据库中的scan和put操作。scan用于扫描表中的一系列数据,而put则用于插入新的数据记录。通过了解这两个基本操作的工作原理,可以更好地掌握HBase的数据管理和查询效率。
摘要由CSDN通过智能技术生成
public class FilterTest {
	
	//操作表数据CRUD
	private Connection conn;
	//操作表 创建,删除表
	private Admin admin;
	
	/**
	 * 初始化连接
	 */
	@Before
	public void init() throws IOException {
		Configuration conf = HBaseConfiguration.create();
		//创建连接
		conn = ConnectionFactory.createConnection(conf);
		//获取admin
		admin = conn.getAdmin();
	}
	
	/**
	 * 插入数据,一次想插入10000条
	 */
	@Test
	public void insert() throws Exception {
		HTable table = (HTable) conn.getTable(TableName.valueOf("ns1:t1"));
		ArrayList<Put> list = new ArrayList<Put>();
		Put put;
		for(int i = 1;i<10000;i++) {
			put = new Put(Bytes.toBytes("row"+i));
			put.addColumn(Bytes.toBytes("f1"), Bytes.toBytes("id"), Bytes.toBytes("row"+i));
			put.addColumn(Bytes.toBytes("f1"), Bytes.toBytes("name"), Bytes.toBytes("tom"+i));
			put.addColumn(Bytes.toBytes("f1"), Bytes.toBytes("age"), Bytes.toBytes(i%100));
			list.add(put);
		}
		table.put(list);
		table.close();
	}
	

	/**
	 * 扫描数据
	 */
	@Test
	public void scan() throws Exception {
		//获取表
		HTable table = (HTable) conn.getTable(TableName.valueOf("ns1:t1"));
		//设置起始行和结束行
		Scan scan = new Scan(Bytes.toBytes("row1"), Bytes.toBytes("row2"));
		ResultScanner rs = table.getScanner(scan);
		Iterator<Result> it = rs.iterator();
		//迭代数据
		while(it.hasNext()) {
			Result r = it.next();
			String id = Bytes.toString(r.getValue(Bytes.toBytes("f1"), Bytes.toBytes("id")));
			String name = Bytes.toString(r.getValue(Bytes.toBytes("f1"), Bytes.toBytes("name")));
			int age = Bytes.toInt(r.getValue(Bytes.toBytes("f1"), Bytes.toBytes("age")));
			System.out.println(id+" "+name+" " +age);
		}
	}
	
	/**
	 * 扫描数据,使用行列缓存
	 */
	@Test
	public void scanWithCashing() throws Exception {
		HTable table = (HTable) conn.getTable(TableName.valueOf("ns1:t1"));
		Scan scan = new Scan(Bytes.toBytes("row1"), Bytes.toBytes("row2"));
		//设置行缓存  一次RPC请求多少行数据
		scan.setCaching(10);
		//设置列缓存  一次RPC请求多少列数据
		scan.setBatch(3);
		ResultScanner rs = table.getScanner(scan);
		Iterator<Result> it = rs.iterator();
		while(it.hasNext()) {
			Result r = it.next();
			String id = Bytes.toString(r.getValue(Bytes.toBytes("f1"), Bytes.toBytes("id")));
			String name = Bytes.toString(r.getValue(Bytes.toBytes("f1"), Bytes.toBytes("name")));
			int age = Bytes.toInt(r.getValue(Bytes.toBytes("f1"), Bytes.toBytes("age")));
			System.out.println(id+" "+name+" " +age);
		}
	}
	
	/**
	 * 关闭连接
	 */
	@After
	public void close() throws IOException {
		admin.close();
		conn.close();
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值