增删改查
4.列出所有的表
hbase(main):028:0>list
5.drop一个表
hbase(main):029:0>disable 'temp_table'
hbase(main):030:0>drop 'temp_table'
6.查询表是否存在
hbase(main):021:0>exists 'member'
7.判断表是否enable
hbase(main):034:0>is_enabled 'member'
8.判断表是否disable
hbase(main):032:0>is_disabled 'member'
false
DML操作
3.通过timestamp来获取两个版本的数据
hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}
hbase(main):011:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586571843}
4.全表扫描:
hbase(main):013:0>scan 'member'
5.删除id为temp的值的‘info:age’字段
hbase(main):016:0>delete 'member','temp','info:age'
6.删除整行
hbase(main):001:0>deleteall 'member','xiaofeng'
7.查询表中有多少行:
hbase(main):019:0>count 'member'
8.给‘xiaofeng’这个id增加'info:age'字段,并使用counter实现递增
hbase(main):057:0>incr 'member','xiaofeng','info:age'
hbase(main):059:0>incr 'member','xiaofeng','info:age'
COUNTER VALUE = 2
hbase(main):060:0>get 'member','xiaofeng','info:age'
获取当前count的值
hbase(main):069:0>get_counter 'member','xiaofeng','info:age'
9.将整张表清空:
hbase(main):035:0>truncate 'member'
可以看出,hbase是先将掉disable掉,然后drop掉后重建表来实现truncate的功能的。
通过Hbase客户端API操纵Hbase集群
------------------------------------
DDL操作
-------------------------------------------
1.
创建一个表
hbase(main):011:0>create 'member','member_id','address','info'
0 row(s) in 1.2210seconds
2.获得表的描述
hbase(main):012:0>list
hbase(main):006:0>describe 'member'
3.删除一个列族,alter,disable,enable
我们之前建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。
删除列族的时候必须先将表给disable掉。
hbase(main):004:0>disable 'member'
hbase(main):005:0>alter'member',NAME=>'member_id',METHOD=>'delete'
hbase(main):011:0>create 'member','member_id','address','info'
0 row(s) in 1.2210seconds
2.获得表的描述
hbase(main):012:0>list
hbase(main):006:0>describe 'member'
3.删除一个列族,alter,disable,enable
我们之前建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。
删除列族的时候必须先将表给disable掉。
hbase(main):004:0>disable 'member'
hbase(main):005:0>alter'member',NAME=>'member_id',METHOD=>'delete'
该列族已经删除,我们继续将表enable
hbase(main):008:0> enable 'member'
hbase(main):008:0> enable 'member'
4.列出所有的表
hbase(main):028:0>list
5.drop一个表
hbase(main):029:0>disable 'temp_table'
hbase(main):030:0>drop 'temp_table'
6.查询表是否存在
hbase(main):021:0>exists 'member'
7.判断表是否enable
hbase(main):034:0>is_enabled 'member'
8.判断表是否disable
hbase(main):032:0>is_disabled 'member'
false
DML操作
-----------------------------------------------
1.插入几条记录
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:contry','china'
put'member','scutshuxue','address:province','zhejiang'
put'member','scutshuxue','address:city','hangzhou'
put'member','xiaofeng','info:birthday','1987-4-17'
put'member','xiaofeng','info:favorite','movie'
put'member','xiaofeng','info:company','alibaba'
put'member','xiaofeng','address:contry','china'
put'member','xiaofeng','address:province','guangdong'
put'member','xiaofeng','address:city','jieyang'
put'member','xiaofeng','address:town','xianqiao'
2.获取一条数据
获取一个id的所有数据
hbase(main):001:0>get 'member','scutshuxue'
获取一个id,一个列族的所有数据
hbase(main):002:0>get 'member','scutshuxue','info'
获取一个id,一个列族中一个列的所有数据
hbase(main):002:0>get 'member','scutshuxue','info:age'
6.更新一条记录
将scutshuxue的年龄改成99
hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99'
1.插入几条记录
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:contry','china'
put'member','scutshuxue','address:province','zhejiang'
put'member','scutshuxue','address:city','hangzhou'
put'member','xiaofeng','info:birthday','1987-4-17'
put'member','xiaofeng','info:favorite','movie'
put'member','xiaofeng','info:company','alibaba'
put'member','xiaofeng','address:contry','china'
put'member','xiaofeng','address:province','guangdong'
put'member','xiaofeng','address:city','jieyang'
put'member','xiaofeng','address:town','xianqiao'
2.获取一条数据
获取一个id的所有数据
hbase(main):001:0>get 'member','scutshuxue'
获取一个id,一个列族的所有数据
hbase(main):002:0>get 'member','scutshuxue','info'
获取一个id,一个列族中一个列的所有数据
hbase(main):002:0>get 'member','scutshuxue','info:age'
6.更新一条记录
将scutshuxue的年龄改成99
hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99'
3.通过timestamp来获取两个版本的数据
hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}
hbase(main):011:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586571843}
4.全表扫描:
hbase(main):013:0>scan 'member'
5.删除id为temp的值的‘info:age’字段
hbase(main):016:0>delete 'member','temp','info:age'
6.删除整行
hbase(main):001:0>deleteall 'member','xiaofeng'
7.查询表中有多少行:
hbase(main):019:0>count 'member'
8.给‘xiaofeng’这个id增加'info:age'字段,并使用counter实现递增
hbase(main):057:0>incr 'member','xiaofeng','info:age'
hbase(main):059:0>incr 'member','xiaofeng','info:age'
COUNTER VALUE = 2
hbase(main):060:0>get 'member','xiaofeng','info:age'
获取当前count的值
hbase(main):069:0>get_counter 'member','xiaofeng','info:age'
9.将整张表清空:
hbase(main):035:0>truncate 'member'
可以看出,hbase是先将掉disable掉,然后drop掉后重建表来实现truncate的功能的。
------------------------------------------------------------
public class TestCRUD {
private Configuration conf ;
private Connection conn ;
private HBaseAdmin admin;
@Before
public void init(){
try {
conf = HBaseConfiguration.create();
conn = ConnectionFactory.createConnection(conf);
admin=(HBaseAdmin) conn.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 创建命名空间(类似于库)
* @throws IOException
*/
@Test
public void createNameSpace() throws IOException{
NamespaceDescriptor.Builder builder=NamespaceDescriptor.create("mybase");
NamespaceDescriptor nd=builder.build();
admin.createNamespace(nd);
admin.close();
}
/**
* 建立表
* @throws IOException
*/
@Test
public void createTable() throws IOException{
//创建表描述符
HTableDescriptor desc=new HTableDescriptor(TableName.valueOf("mybase:student"));
//创建列描述符
HColumnDescriptor colDesc=new HColumnDescriptor(Bytes.toBytes("info"));
//添加列描述符
desc.addFamily(colDesc);
//创建表
admin.createTable(desc);
admin.close();
}
/**
* 删除表
* @throws Exception
*/
@Test
public void dropTable() throws Exception{
if(!admin.tableExists("mybase:student")){
System.out.println("表不存在!");
}else{
admin.disableTable("mybase:student"); //禁用表
admin.deleteTable("mybase:student"); //删除表
System.out.println("表删除成功");
admin.close();
}
}
@Test
public void put() throws IOException{
Table table=conn.getTable(TableName.valueOf("mybase:student"));
Put put1=new Put(Bytes.toBytes("row1"));
put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("tom1"));
put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("12"));
put1.addColumn(Bytes.toBytes("info"), Bytes.toBytes("sex"), Bytes.toBytes("M"));
table.put(put1);
Put put2=new Put(Bytes.toBytes("row2"));
put2.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("bob1"));
put2.addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("18"));
put2.addColumn(Bytes.toBytes("info"), Bytes.toBytes("sex"), Bytes.toBytes("M"));
table.put(put2);
}
@Test
public void get() throws IOException{
Table table=conn.getTable(TableName.valueOf("mybase:student"));
Get get=new Get(Bytes.toBytes("row1"));
Result r=table.get(get);
String name=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("name")));
String age=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("age")));
String sex=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("sex")));
System.out.println(name+" "+age+" "+sex);
}
@Test
public void scan() throws IOException{
Table table=conn.getTable(TableName.valueOf("mybase:student"));
Scan scan=new Scan(); //遍历所有行
ResultScanner rs=table.getScanner(scan);
Iterator<Result> iterator=rs.iterator();
while(iterator.hasNext()){
Result r=iterator.next();
String name=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("name")));
String age=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("age")));
String sex=Bytes.toString(r.getValue(Bytes.toBytes("info"),Bytes.toBytes("sex")));
System.out.println(name+" "+age+" "+sex);
}
}
}