hbase的增删改查

package hbase.com.cn.hbase;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
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.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.ValueFilter;

public class TestDML {
static Configuration conf=null;
static Connection connect=null;
static HTable table = null;
public static void init() throws Exception {
conf=HBaseConfiguration.create();
conf.set(“hbase.zookeeper.quorum”, “centos01:2181,centos02:2181,centos01:2181”);
connect = ConnectionFactory.createConnection(conf);
//dml操作句柄 需要给操作表
table=(HTable) connect.getTable(TableName.valueOf(“user”));
}

//数据插入
public static void insertData() throws Exception {
	//put 对象 数据插入的操作对象
	Put put=new Put("rk0001".getBytes());// 行簇 
	//参数1: 列簇 参数2:列名 参数3:值
	put.add("data1".getBytes(),"name".getBytes(),"zhangsan".getBytes());
	table.put(put);
	
}
public static void insertDatas() throws Exception {
	//从本地读取文件 读取完毕插入hbase
	List<Put> list=new ArrayList<>();
	//从本地读取文件
	BufferedReader br=new BufferedReader(new FileReader("d:/data/data/mapreduce/student.txt"));
	String line=null;
	int count=0;
	while((line=br.readLine())!=null) {
		count++;
		String[] split=line.split(",");
		Put p=new Put(("rk000"+count).getBytes());//行簇
		if(split.length==5) {
			p.add("family".getBytes(), "id".getBytes(), split[0].getBytes());
			p.add("family".getBytes(), "name".getBytes(), split[1].getBytes());
			p.add("family".getBytes(), "sex".getBytes(), split[2].getBytes());
			p.add("family".getBytes(), "age".getBytes(), split[3].getBytes());
			p.add("family".getBytes(), "dept".getBytes(), split[4].getBytes());
			list.add(p);
		}
	}
	br.close();
	table.put(list);
	
}
public static void getData() throws Exception {
	Get get=new Get("rk0001".getBytes());
	Result result=table.get(get);
	List<KeyValue>list=result.list();
	for(KeyValue kv:list) {
		System.out.print(new String(kv.getRow())+"\t");//行簇
		System.out.print(new String(kv.getFamily())+"\t");//列簇
		System.out.print(new String(kv.getQualifier())+"\t");//属性字段名 
		System.out.println(new String(kv.getValue()));
	}
	
}

public static void scanDataFilter() throws Exception {
	Scan scan=new Scan();
	//Scan scan=new Scan("rk007".getBytes());//给定起始rowkwy进行扫描
	/*scan.addColumn("family02".getBytes(), "id".getBytes());*/
	scan.addColumn("family".getBytes(), "age".getBytes());//前面列簇  后面字段
	//过滤器 前段 操作符 后面行簇
	Filter fi1=new RowFilter(CompareOp.GREATER_OR_EQUAL,new BinaryComparator("rk0004".getBytes()));
	Filter fi2=new ValueFilter(CompareOp.GREATER,new BinaryComparator("20".getBytes()));
	List<Filter> fs=new ArrayList<>();
	fs.add(fi1);
	fs.add(fi2);
	Filter f=new FilterList(fs);
	scan.setFilter(f);//将多重过滤条件加入list集合
	ResultScanner scanner = table.getScanner(scan);
	//迭代器返回所有的信息
	Iterator<Result> iterator = scanner.iterator();
	while(iterator.hasNext()){
		Result next = iterator.next();
		List<KeyValue> list = next.list();
		for(KeyValue kv:list){
			System.out.print(new String(kv.getRow())+"\t");
			System.out.print(new String(kv.getFamily())+"\t");
			System.out.print(new String(kv.getQualifier())+"\t");
			System.out.println(new String(kv.getValue()));
		}
	}

//
// Scan scan=new Scan();//全表扫描
// scan.setStartRow(“rk002”.getBytes());
// scan.setStopRow(“rk007”.getBytes());
// //scan.setFilter(filter01);//添加多次过滤器 最后一次添加的生效
//
// ResultScanner scanner = table.getScanner(scan);
// //迭代器返回的是所有信息
// Iterator iterator = scanner.iterator();
// while(iterator.hasNext()){
// Result next = iterator.next();
// List list = next.list();
// for(KeyValue kv:list){
// System.out.print(new String(kv.getRow())+"\t");
// System.out.print(new String(kv.getFamily())+"\t");
// System.out.print(new String(kv.getQualifier())+"\t");
// System.out.println(new String(kv.getValue()));
// }
// }
}
public static void main(String[] args) throws Exception {
init();
//insertData();
//insertDatas();
//getData();
scanDataFilter();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值