Hbase数据库名字空间(namesppace)

  • ns

    在逻辑上对表进行分组,有两个内置表空间,hbase和default.

Hbase create table

Configuration config = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(config);

TableName tableName = TableName.valueOf("test");
HTableDescriptor htd = new HTableDescriptor(tableName);
HColumnDescriptor hcd = new HColumnDescriptor("data");
htd.addFamily(hcd);          //添加列族
admin.createTable(htd);    //创建表

Hbase get

HTable table = new HTable(config, tableName);
//... where rowkey=xxx and label=x:xxx
//必须指定rowkey ==> getById
Get get = new Get(Bytes.toBytes("row1"));   //指定rowkey
get.addColumn();
get.addFamily();

Result r = table.get(get);
r.getValue();                   //当前版本
List<KeyValue> r.getColumn();           //所有版本

Hbase put

HTable table = ... ;        
Put put = new Put( row );       //指定rowkey
put.add(family,column,value);       //列族,列,value
put.add(family,column,version,value);   //显式指定版本号 table.put(put);

Hbase Scan

Scan scan = new Scan(); //创建扫描对象,定制扫描条件
scan.addColumn()
scan.setStartRow()      //起始key
scvan.setStopRow()      //结束key

//每次批量提取100条记录,耗尽时再次提取100
ResultScanner scanner = table.getScanner(scan);//cursor|iterator

for(Result r : scanner){...}
scanner.close();

Hbase delete

Delete del = new Delete();  //rowkey
del.addColumn()
del.addFamily()

htable.delete(del);

Hbase drop table

admin.disableTable(...);
admin.deleteTable(...);
table.close();
admin.close();

Hbase join

  • HBase不支持连接操作

  • 可以在应用层实现

    • 组合scan() + get()间接实现

Hbase alter schema

Configuration conf = ...;
HBaseAdmin admin = ...;
//
admin.disableTable(t);
//
HColumnDesc hcd = ...
admin.addColumn(table,coldesc);
admin.modifyColumn(table,colDesc);
//
admin.enableTable(t);

Hbase Log操作

图片11.png

运行hbase程序

  • $>export HBASE_CLASSPATH=xxx.jar

  • $>hbase ClassName

//格式如下:rowname/col name/celltimestamp/celltype/cell length/internal Hb field
Get: keyvalues={row1/data:1/1414932826551/Put/vlen=6/mvcc=0}
Scan: keyvalues={row1/data:1/1414932826551/Put/vlen=6/mvcc=0}
Scan: keyvalues={row2/data:2/1414932826564/Put/vlen=6/mvcc=0}
Scan: keyvalues={row3/data:3/1414932826566/Put/vlen=6/mvcc=0}