首先创建一个maven项目,然后再pom.xml文件中添加
修改表定义:
package cn.bdqn.hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.junit.Before;
import org.junit.Test;
public class Demo {
Connectionconn=null;
@Before
public void getConn()throws Exception{
Configuration conf=HBaseConfiguration.create();//会自动加载hbase-site.xml
conf.set("hbase.zookeeper.quorum","pro01:2181,pro02:2181,pro03:2181,pro04:2181");
conn =ConnectionFactory.createConnection(conf);
}
/**
* DDl
*
*/
@Test
public void tetsCreate()throws Exception{
//构建连接对象
;
//从连接中构造一个DDl操作器
Admin admin=conn.getAdmin();
//创建一个表定义描述对象
HTableDescriptor hTableDescriptor=new HTableDescriptor(TableName.valueOf("userlmj_info"));
//创建列族定义描述对象
HColumnDescriptor hColumnDescriptor_1=new HColumnDescriptor("baselmj_info");
HColumnDescriptor hColumnDescriptor_2=new HColumnDescriptor("extralmj_info");
hColumnDescriptor_1.setMaxVersions(3);//设置列族中存储数据的最大版本数,默认是1
//将列族定义信息对象放入表定义对象中
hTableDescriptor.addFamily(hColumnDescriptor_1);
hTableDescriptor.addFamily(hColumnDescriptor_2);
//用ddl操作器对象:admin 来建表
admin.createTable(hTableDescriptor);
//关闭连接
admin.close();
conn.close();
}
/**
* 删除表
*
*/
@Test
public void deleted()throws Exception{
Admin admin=conn.getAdmin();
//停用表
admin.disableTable(TableName.valueOf("userlmj_info"));
//删除表
admin.deleteTable(TableName.valueOf("userlmj_info"));
admin.close();
conn.close();
}
/**
* 修改表--添加列族
*
*/
@Test
public void uodateser()throws Exception{
Admin admin=conn.getAdmin();
//取出旧的表定义信息
HTableDescriptor tableDescriptor=admin.getTableDescriptor(TableName.valueOf("user_info"));
//新构造一个列族定义
HColumnDescriptor hColumnDescriptor=new HColumnDescriptor("other_info");
hColumnDescriptor.setBloomFilterType(BloomType.ROW);//设置该列族的布隆过滤器类型
//将列族添加到表定义中
tableDescriptor.addFamily(hColumnDescriptor);
admin.modifyTable(TableName.valueOf("user_info"),tableDescriptor);
}
}
修改表数据:
package cn.bdqn.hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
public class Demo2 {
Connectionconn=null;
@Before
public void getConn()throws Exception{
Configuration conf= HBaseConfiguration.create();//会自动加载hbase-site.xml
conf.set("hbase.zookeeper.quorum","pro01:2181,pro02:2181,pro03:2181,pro04:2181");
conn = ConnectionFactory.createConnection(conf);
}
/**
* 增
*/
@Test
public void testPut()throws Exception{
//获取一个指定操作表的table对象
Table table=conn.getTable(TableName.valueOf("user_info"));
//构造要插入的数据为一个put类型的对象
Put put =new Put(Bytes.toBytes(007));
put.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("username"),Bytes.toBytes("李明京"));
put.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("age"),Bytes.toBytes(18));
put.addColumn(Bytes.toBytes("extra_info"),Bytes.toBytes("addr"),Bytes.toBytes("北京海淀"));
Put put2 =new Put(Bytes.toBytes("005"));
put2.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("username"),Bytes.toBytes("lmj"));
put2.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("age"),Bytes.toBytes("19"));
put2.addColumn(Bytes.toBytes("extra_info"),Bytes.toBytes("addr"),Bytes.toBytes("山西临汾"));
Put put3 =new Put(Bytes.toBytes("008"));
put3.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("username"),Bytes.toBytes("laoli"));
put3.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("age"),Bytes.toBytes("89"));
put3.addColumn(Bytes.toBytes("extra_info"),Bytes.toBytes("addr"),Bytes.toBytes("山东菏泽"));
ArrayList puts =new ArrayList();
//插入数据
puts.add(put2);
puts.add(put);
puts.add(put3);
table.put(puts);
table.close();
conn.close();
}
/**
* 删
*
*/
@Test
public void delete()throws Exception{
Table table=conn.getTable(TableName.valueOf("user_info"));
//构造一个对象封装要删除的信息
Delete delete1=new Delete(Bytes.toBytes(007));
Delete delete2=new Delete(Bytes.toBytes("008"));
delete2.addColumn(Bytes.toBytes("extra_info"),Bytes.toBytes("addr"));
ArrayList dels=new ArrayList();
dels.add(delete1);
dels.add(delete2);
table.delete(dels);
table.close();
conn.close();
}
/**
* 改
* (put来覆盖)
*/
@Test
public void testPuts()throws Exception{
//获取一个指定操作表的table对象
Table table=conn.getTable(TableName.valueOf("user_info"));
//构造要插入的数据为一个put类型的对象
Put put =new Put(Bytes.toBytes(007));
put.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("username"),Bytes.toBytes("李明京"));
put.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("age"),Bytes.toBytes(18));
put.addColumn(Bytes.toBytes("extra_info"),Bytes.toBytes("addr"),Bytes.toBytes("北京海淀"));
Put put2 =new Put(Bytes.toBytes("005"));
put2.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("username"),Bytes.toBytes("lmj"));
put2.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("age"),Bytes.toBytes("19"));
put2.addColumn(Bytes.toBytes("extra_info"),Bytes.toBytes("addr"),Bytes.toBytes("山西临汾"));
Put put3 =new Put(Bytes.toBytes("008"));
put3.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("username"),Bytes.toBytes("laoli"));
put3.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("age"),Bytes.toBytes("89"));
put3.addColumn(Bytes.toBytes("extra_info"),Bytes.toBytes("addr"),Bytes.toBytes("山东菏泽"));
ArrayList puts =new ArrayList();
//插入数据
puts.add(put2);
puts.add(put);
puts.add(put3);
table.put(puts);
table.close();
conn.close();
}
/**
*查
*/
@Test
public void selects()throws Exception{
Table table=conn.getTable(TableName.valueOf("user_info"));
Get get =new Get("001".getBytes());
Result result = table.get(get);
//从结果中取用户指定的某个key的value
byte[] value = result.getValue("base_info".getBytes(),"age".getBytes());
System.out.println(value.toString());
System.out.println("-----------");
//遍历整行所有的单元格
CellScanner cellScanner = result.cellScanner();
while (cellScanner.advance()){
Cell current = cellScanner.current();
byte[] rowArray = current.getRowArray();
byte[] familyArray = current.getFamilyArray();
byte[] qualifierArray = current.getQualifierArray();
byte[] valueArray = current.getValueArray();
System.out.println("行键"+new String(rowArray,current.getRowOffset(),current.getRowLength()));
System.out.println("列族名"+new String(familyArray,current.getFamilyOffset(),current.getFamilyLength()));
System.out.println("列名"+new String(qualifierArray,current.getQualifierOffset(),current.getQualifierLength()));
System.out.println("value"+new String(valueArray,current.getValueOffset(),current.getValueLength()));
}
table.close();
conn.close();
}
/**
* 大范围插入数据
*/
@Test
public void testPlus()throws Exception{
Table table=conn.getTable(TableName.valueOf("user_info"));
ArrayList puts=new ArrayList();
for (int i=0;i<1000;i++){
Put put=new Put(Bytes.toBytes(""+i));
put.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("username"),Bytes.toBytes("李明京"+i));
put.addColumn(Bytes.toBytes("base_info"),Bytes.toBytes("age"),Bytes.toBytes(18+i));
put.addColumn(Bytes.toBytes("extra_info"),Bytes.toBytes("addr"),Bytes.toBytes("北京海淀"));
puts.add(put);
}
table.put(puts);
table.close();
conn.close();
}
/**
* 大范围查询数据
* @throws Exception
*/
@Test
public void hangjian()throws Exception{
Table table=conn.getTable(TableName.valueOf("user_info"));
//包含起始行,不包含结束行,如果真的想查询末尾的话可以在后面添加一个不可见字节
Scan scan =new Scan("10".getBytes(),"20\000".getBytes());
ResultScanner scanner = table.getScanner(scan);
Iterator iterator = scanner.iterator();
while(iterator.hasNext()){
Result next = iterator.next();
while (next.advance()){
Cell current = next.current();
byte[] rowArray = current.getRowArray();
byte[] familyArray = current.getFamilyArray();
byte[] qualifierArray = current.getQualifierArray();
byte[] valueArray = current.getValueArray();
System.out.println("行键"+new String(rowArray,current.getRowOffset(),current.getRowLength()));
System.out.println("列族名"+new String(familyArray,current.getFamilyOffset(),current.getFamilyLength()));
System.out.println("列名"+new String(qualifierArray,current.getQualifierOffset(),current.getQualifierLength()));
System.out.println("value"+new String(valueArray,current.getValueOffset(),current.getValueLength()));
}
System.out.println("---------------");
}
}
}