[root@CloudDeskTop ~]# su -l hadoop
[hadoop@CloudDeskTop ~]$ cd /software/hbase-1.2.6/bin/
[hadoop@CloudDeskTop bin]$ type hbase
hbase is /software/hbase-1.2.6/bin/hbase
[hadoop@CloudDeskTop bin]$ hbase shell
删除键:向左删除是ctrl+backspace、向右删除是backspace。
表空间:
hbase默认有两个表空间,它们是default和hbase
列出有多少个表空间
hbase(main):003:0> list_namespace
NAMESPACE
default (当未指定表空间时,数据存放在此处)
hbase(存放元数据的表空间)
查看default表空间下有哪些表:
>>list_namespace_tables \'default\'
禁止创建表到hbase表空间下
>>list_namespace_tables \'hbase\'
创建表空间:
>>create_namespace \'mmzs\'
查看表空间信息:
>>describe_namespace \'mmzs\'
删除表空间:
>>drop_namespace \'mmzs\'
创建表tuser,该表中有两个列族baseinfo和extrainfo,baseinfo族中存储的每个值的最近时间版本数量为5,族参数 必须大写,如NAME和VERSION
>>create \'mmzs:tuser\',{NAME=>\'baseinfo\',VERSIONS=>5},{NAME=>\'extrainfo\',VERSIONS=>3}
显示表结构:
>>describe \'mmzs:tuser\'
#会先判断有没有,有就修改,没有就增加,修改是alter
修改表:修改表定义,修改列族baseinfo,将主版本数量改为3
>>alter \'mmzs:tuser\',{NAME=>\'baseinfo\',VERSIONS=>3}
>>describe \'mmzs:tuser\'
修改表:修改表定义,增加列族base
>>alter \'mmzs:tuser\',{NAME=>\'base\',VERSIONS=>5}
>>describe \'mmzs:tuser\'
修改表:修改表定义,删除列族baseinfo,低版本的HBase需要先disable而不是alter,再delete
>>alter \'mmzs:tuser\',{NAME=>\'baseinfo\',METHOD=>\'delete\'}
>>describe \'mmzs:tuser\'
判断是否存在某表:
>>exists \'mmzs:tuser\'
#删除是drop
删除表:在删除表之前必须先disable禁用表然后再执行drop操作删除它
>>disable \'mmzs:tuser\'
>>drop \'mmzs:tuser\'
>>describe \'mmzs:tuser\'
小结:大数据学习交流QQ群:217770236
创建表: 命名空间的DDL语法为:xxx_namespace \'namespace\' 表的DDL操作语法: >>xxx \'namespace:tablename\',{NAME=\'yyyy\',VERSION=\'number\',METHOD=\'delete\'}
创建表:
>>create \'mmzs:tuser\',{NAME=>\'base\',VERSIONS=>5},{NAME=>\'extra\',VERSIONS=>3}
增加键值对到表中:向mmzs表空间的tuser表中的base列族中添加name列,添加值为ligang
#\'base:name\'称为键
#\'ligang\'称为值
#修改和增加都是put,存在时是修改,不存在时是增加
>>put \'mmzs:tuser\',\'001\',\'base:name\',\'ligang\'
>>put \'mmzs:tuser\',\'001\',\'base:age\',13
查询表中键对应的值:
>>get \'mmzs:tuser\',\'001\',\'base:name\'
查询001行的所有键值对
>>get \'mmzs:tuser\',\'001\',\'base:name\'
修改键值对:
>>put \'mmzs:tuser\',\'001\',\'base:name\',\'zhangsan\'
删除表中的键值对:
>>delete \'mmzs:tuser\',\'001\',\'base:name\'
删除表中的所有数据并重置表的结构,实际上truncate属于DDL操作
>>truncate \'mmzs:tuser\'
扫描表中的所有行的数据:
>>scan \'mmzs:tuser\'
使用get_table预定义一个表对象的引用(ddl操作),
>>tuser=get_table \'mmzs:tuser\'
>>tuser.scan
统计表中的行记录数:
>>count \'mmzs:tuser\'
小结:
hbase表的增删改查操作语法:
>>copmmand \'namespace:tabname\',\'rowkey\',\'family:fieldkey\',\'fieldvalue\'
DDL数据检索与查询:
#get只能返回单行记录中的键值对
//Some examples: hbase> get \'ns1:t1\', \'r1\' hbase> get \'t1\', \'r1\' hbase> get \'t1\', \'r1\', {TIMERANGE => [ts1, ts2]} hbase> get \'t1\', \'r1\', {COLUMN => \'c1\'} hbase> get \'t1\', \'r1\', {COLUMN => [\'c1\', \'c2\', \'c3\']} hbase> get \'t1\', \'r1\', {COLUMN => \'c1\', TIMESTAMP => ts1} hbase> get \'t1\', \'r1\', {COLUMN => \'c1\', TIMERANGE => [ts1, ts2], VERSIONS => 4} hbase> get \'t1\', \'r1\', {COLUMN => \'c1\', TIMESTAMP => ts1, VERSIONS => 4} hbase> get \'t1\', \'r1\', {FILTER => "ValueFilter(=, \'binary:abc\')"} hbase> get \'t1\', \'r1\', \'c1\' hbase> get \'t1\', \'r1\', \'c1\', \'c2\' hbase> get \'t1\', \'r1\', [\'c1\', \'c2\'] hbase> get \'t1\', \'r1\', {COLUMN => \'c1\', ATTRIBUTES => {\'mykey\'=>\'myvalue\'}} hbase> get \'t1\', \'r1\', {COLUMN => \'c1\', AUTHORIZATIONS => [\'PRIVATE\',\'SECRET\']} hbase> get \'t1\', \'r1\', {CONSISTENCY => \'TIMELINE\'} hbase> get \'t1\', \'r1\', {CONSISTENCY => \'TIMELINE\', REGION_REPLICA_ID => 1}
根据行键检索对应记录中所有列族下的所有键值对:
根据行键和列族检索对应列族中的所有键值对:
根据行键、列族和字段键检索对应键值:
根据行键检索对应记录中所有列族下的所有键值对:
>>get \'mmzs:tuser\',\'001\',\'base\'
>>get \'mmzs:tuser\',\'001\',\'base\',\'extra\'
>>get \'mmzs:tuser\',\'001\',\'base:name\',\'base:age\'
>>get \'mmzs:tuser\',\'001\',{COLUMN=>[\'base:name\',\'base:age\']}
>>get \'mmzs:tuser\',\'001\',{COLUMN=>[\'base:name\',\'base:age\'],VERSION=>3}
>>get \'mmzs:tuser\',\'ligang+13\',\'baseinfo\',\'extra\'
#匹配含liubei的value值
>>get \'mmzs:tuser\',\'002\',{FILTER=>"ValueFilter(=,\'substring:liubei\')"}
#匹配含name字段的字段值
>>get \'mmzs:tuser\',\'002\',{FILTER=>"QualifierFilter(=,\'substring:name\')"}
#scan扫描多行记录:
//Some examples: hbase> scan \'hbase:meta\' hbase> scan \'hbase:meta\', {COLUMNS => \'info:regioninfo\'} hbase> scan \'ns1:t1\', {COLUMNS => [\'c1\', \'c2\'], LIMIT => 10, STARTROW => \'xyz\'} hbase> scan \'t1\', {COLUMNS => [\'c1\', \'c2\'], LIMIT => 10, STARTROW => \'xyz\'} hbase> scan \'t1\', {COLUMNS => \'c1\', TIMERANGE => [1303668804, 1303668904]} hbase> scan \'t1\', {REVERSED => true} hbase> scan \'t1\', {ALL_METRICS => true} hbase> scan \'t1\', {METRICS => [\'RPC_RETRIES\', \'ROWS_FILTERED\']} hbase> scan \'t1\', {ROWPREFIXFILTER => \'row2\', FILTER => " (QualifierFilter (>=, \'binary:xyz\')) AND (TimestampsFilter ( 123, 456))"} hbase> scan \'t1\', {FILTER => org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0)} hbase> scan \'t1\', {CONSISTENCY => \'TIMELINE\'} For setting the Operation Attributes hbase> scan \'t1\', { COLUMNS => [\'c1\', \'c2\'], ATTRIBUTES => {\'mykey\' => \'myvalue\'}} hbase> scan \'t1\', { COLUMNS => [\'c1\', \'c2\'], AUTHORIZATIONS => [\'PRIVATE\',\'SECRET\']}
根据列族检索所有键值对:
>>scan \'mmzs:tuser\',{COLUMNS=>\'base\'}
>>scan \'mmzs:tuser\',{COLUMNS=>[\'base:name\',\'extra:name\']}
#根据Key部分字段匹配:
>>scan \'mmzs:tuser\',{COLUMNS=>[\'base\',\'extra\'],FILTER=>"QualifierFilter(=,\'substring:age\')"}
#根据Value部分字段匹配:
>>scan \'mmzs:tuser\',{COLUMNS=>[\'base\',\'extra\'],FILTER=>"ValueFilter(=,\'substring:liubei\')"}
#查询指定行到指定行
>>scan \'mmzs:tuser\',{COLUMNS=>[\'base\',\'extra\'],STARTROW=>\'002\',ENDROW=>\'004\'}
#根据行键进行过滤,秒级速度
>>put \'mmzs:tuser\',\'ligang+20171205+chengdu\',\'base:name\',\'ligang\'
>>scan \'mmzs:tuser\',{ROWPREFIXFILTER=>\'ligang\'}
#扫描过滤后并用limit进行分页处理,从第二行开始,显示3行
>>scan \'mmzs:tuser\',{COLUMN=>[\'base\',\'extra\'],STARTROW=>\'002\',LIMIT=>3}