//连接数据库
Configuration conf = new Configuration();
conf.set("hbase.zookeeper.quorum", "node01:2181,node02:2181,node03:2181");
Connection connection = ConnectionFactory.createConnection(conf);
//读取表
Table hbase_rate = connection.getTable(TableName.valueOf("hbase_rate"));
Scan scan = new Scan();
scan.setStartRow("7u6UaIPfLC0".getBytes());
scan.setStopRow("1WBxfCRS2ag".getBytes());
ResultScanner scanner = hbase_rate.getScanner(scan);
for (Result result : scanner) {
System.out.println(Bytes.toString(result.getRow()));
System.out.println(Bytes.toString(result.getValue("cf".getBytes(), "age".getBytes())));
}
connection.close();
//连接数据库
Configuration conf = new Configuration();
conf.set("hbase.zookeeper.quorum", "node01:2181,node02:2181,node03:2181");
Connection connection = ConnectionFactory.createConnection(conf);
//读取表
Table hbase_comments = connection.getTable(TableName.valueOf("hbase_comments"));
Scan scan = new Scan();
ResultScanner scanner = hbase_comments.getScanner(scan);
for (Result result : scanner) {
//遍历一行内的所有的列
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
if (Bytes.toString(CellUtil.cloneQualifier(cell)).equals("comments"));
System.out.println(Bytes.toString(CellUtil.cloneFamily(cell))+":"+Bytes.toString(CellUtil.cloneQualifier(cell))+"-"+Bytes.toString(CellUtil.cloneValue(cell)));
}
}
connection.close();
/ 创建hbase 数据表
public static void create() throws IOException {
//1 连接数据库
//2 对数据库进行操作
//3 关闭连接
//实例化配置文件
Configuration conf=new Configuration();
//指定zookeeper
conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
Connection connection=ConnectionFactory.createConnection(conf);
//实例adime 管理员
Admin admin=connection.getAdmin();
//实例表名 表结构
//表名
TableName myusere=TableName.valueOf("myuser");
//设置表的结构
HTableDescriptor hTableDescriptor=new HTableDescriptor(myusere);
//设置列族
HColumnDescriptor f1 = new HColumnDescriptor("f1");
HColumnDescriptor f2 = new HColumnDescriptor("f2");
//建立表与列族之间的关系
hTableDescriptor.addFamily(f1);
hTableDescriptor.addFamily(f2);
admin.createTable(hTableDescriptor);
admin.close();
//关闭连接
connection.close();
}
//向表中添加数据
public static void addDatas() throws IOException {
//获取连接 找到需要添加的表
Configuration conf =new Configuration();
conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
Connection connection = ConnectionFactory.createConnection(conf);
Table myuser = connection.getTable(TableName.valueOf("myuser"));
//示例数据
Put put=new Put("0001".getBytes());
put.addColumn("f1".getBytes(),"name".getBytes(),"zhangsan".getBytes());
put.addColumn("f1".getBytes(),"id".getBytes(),"001".getBytes());
put.addColumn("f1".getBytes(),"age".getBytes(),"18".getBytes());
//插入数据
myuser.put(put);
//关闭连接
connection.close();
}
//向表中添加一批数据
public static void addDatass() throws IOException {
//获取连接 找到需要添加的表
Configuration conf =new Configuration();
conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
Connection connection = ConnectionFactory.createConnection(conf);
Table myuser = connection.getTable(TableName.valueOf("myuser"));
//示例数据
//创建put对象,并指定rowkey
Put put = new Put("0002".getBytes());
put.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(1));
put.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("曹操"));
put.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(30));
put.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
put.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("沛国谯县"));
put.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("16888888888"));
put.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("helloworld"));
Put put2 = new Put("0003".getBytes());
put2.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(2));
put2.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("刘备"));
put2.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(32));
put2.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
put2.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("幽州涿郡涿县"));
put2.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("17888888888"));
put2.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("talk is cheap , show me the code"));
Put put3 = new Put("0004".getBytes());
put3.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(3));
put3.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("孙权"));
put3.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(35));
put3.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
put3.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("下邳"));
put3.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("12888888888"));
put3.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("what are you 弄啥嘞!"));
Put put4 = new Put("0005".getBytes());
put4.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(4));
put4.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("诸葛亮"));
put4.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(28));
put4.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
put4.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("四川隆中"));
put4.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("14888888888"));
put4.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("出师表你背了嘛"));
Put put5 = new Put("0005".getBytes());
put5.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(5));
put5.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("司马懿"));
put5.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(27));
put5.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
put5.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("哪里人有待考究"));
put5.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("15888888888"));
put5.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("跟诸葛亮死掐"));
Put put6 = new Put("0006".getBytes());
put6.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(5));
put6.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("xiaobubu—吕布"));
put6.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(28));
put6.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
put6.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("内蒙人"));
put6.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("15788888888"));
put6.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("貂蝉去哪了"));
List<Put> listPut = new ArrayList<Put>();
listPut.add(put);
listPut.add(put2);
listPut.add(put3);
listPut.add(put4);
listPut.add(put5);
listPut.add(put6);
//插入数据
myuser.put(listPut);
//关闭连接
connection.close();
}
//查询 主键 rowkey 0004 的人 获取某一行
public static void searchData() throws IOException {
//连接数据库
Configuration conf =new Configuration();
conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
Connection connection = ConnectionFactory.createConnection(conf);
//获取到表
Table myuser = connection.getTable(TableName.valueOf("myuser"));
// 设置需要读取的数据(rowkey)
Get get=new Get("0004".getBytes());
//获取某一个列族的数据
// get.addFamily("f1".getBytes());
//获取某一个指定列族下的特定列 ,查询
//get.addColumn("f1".getBytes(),"name".getBytes());
// 读取数据 一个result 就是一行数据
Result result = myuser.get(get);
//遍历数据
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
//获取列族
// System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
//获取属性
// System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
//获取value 的值
System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
if (Bytes.toString(CellUtil.cloneQualifier(cell)).equals("id" )|| Bytes.toString(CellUtil.cloneQualifier(cell)).equals("age")){
System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
}else{
System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
}
}
//关闭连接
connection.close();
}
//通过starRowKey 和 endRowKey 进行扫描
public static void scanrowkey() throws IOException {
//连接数据库
Configuration conf =new Configuration();
conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
Connection connection=ConnectionFactory.createConnection(conf);
Table myuser = connection.getTable(TableName.valueOf("myuser"));
Scan scan=new Scan();
scan.setStartRow("0002".getBytes());
scan.setStopRow("0006".getBytes());
ResultScanner scanner = myuser.getScanner(scan);
for (Result result : scanner) {
System.out.println("rowkey"+Bytes.toString(result.getRow()));
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
if (Bytes.toString(CellUtil.cloneQualifier(cell)).equals("id" )|| Bytes.toString(CellUtil.cloneQualifier(cell)).equals("age")){
System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println(Bytes.toString(CellUtil.cloneRow(cell)));
System.out.println(Bytes.toInt(CellUtil.cloneValue(cell)));
}else {
System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println(Bytes.toString(CellUtil.cloneRow(cell)));
System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
}
}
}
}
// 过滤器 查询rowKey 小于0005的数据
public static void rowKeyFilter() throws IOException {
//连接数据库
Configuration conf =new Configuration();
conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
Connection connection=ConnectionFactory.createConnection(conf);
Table myuser = connection.getTable(TableName.valueOf("myuser"));
Scan scan=new Scan();
// 行的过滤器
// RowFilter rowFilter=new RowFilter(CompareFilter.CompareOp.GREATER_OR_EQUAL,new BinaryComparator("0005".getBytes()));
// scan.setFilter(rowFilter);
// 列族的过滤器
// FamilyFilter familyFilter = new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator("f2".getBytes()));
//scan.setFilter(familyFilter);
//列名的过滤器
// QualifierFilter name1 = new QualifierFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator("name"));
// scan.setFilter(name1);
//单值列的过滤器
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("f1".getBytes(), "name".getBytes(), CompareFilter.CompareOp.NOT_EQUAL, "刘备".getBytes());
scan.setFilter(singleColumnValueFilter);
ResultScanner scanner = myuser.getScanner(scan);
for (Result result : scanner) {
String rowkey = Bytes.toString(result.getRow());
String name = Bytes.toString(result.getValue("f1".getBytes(), "name".getBytes()));
System.out.println(rowkey+" "+name);
}
}