空间的管理:create_namespacetest#创建空间drop_namespacetest#删除空间alter_namespacetest,{METHODset,PROP
空间的管理:
create_namespace 'test' #创建空间
drop_namespace 'test' #删除空间
alter_namespace 'test',{METHOD =>'set','PROPERTY_NAME'=>'PROPERTY_VALUE'}#修改空间名称
list_namespace #查询所有的空间
describe_namespace 'test' #查询某一个空间的属性
list_namespace_tables '空间名' #默认在default里面,查询某一个空间下的所有表:
表的管理:
create 't_test','info' #指定列族式创建,格式为create '表名','列族'
create 't_rental_user','user_id','user_no' #指定字段形式创建,格式为:create '表名称', '列名称1','列名称2','列名称N'
#指定空间形式创建表
create_namespace 'tb' #先创建空间名称,若空间名称存在,则不需要创建
create 'tb:t_rental_user','info'
其中tb为namespace,默认在/hbase/data/里, t_rental_user 为表名,info为列族
注意事项:同一张表的数据或者经常关联的表放在同一个列族里面,namespace基于数据量,也可以直接走默认
describe 't_test' #查看表的属性,确定修改要修改的属性
比如要修改表的压缩方式,默认压缩方式为None
disable '表名' #先让表失效
alter '表名',NAME=>'列族',COMPRESSION=>'snappy' #修改表的压缩方式为snappy
enable '表名' #让表生效,切记勿忘
表增加一列字段:JAVA实现,字段已经压缩,最好JAVA实现
#删除表,先让表失效,再删除表
disable 't_test'
drop 't_test'
truncate 't_test' #清空表数据
list #查询所有的表
count '表名' #查询一张表的行数
alter 'user','data' #增加列族
alter 'user','delete'=>'data' #删除列族
常用的增删改查:
查询所有的表:list #显示所有的表,default默认空间下的直接显示表名,其他空间显示为 空间名:表名 可以认定 空间名:表名 为new表名
查询某一张表:scan '表名' 比如:scan 't_info_car' #default空间下的查询方式
或者 scan 'my_ns:t_order_id' #my_ns空间下的查询方式
scan '表名',{COLUMN=>'列族'} #扫描整个列族
比如: scan 't_test_trans',{COLUMN=>'info'}
scan '表名',{COLUMN=>'列族:列名'} #扫描指定的列
scan 't_test_trans',{COLUMN=>'info:start_time'}
exists '表名' #查询表是否存在
Whoami #查询谁在使用Hbase
status #查询hbase的状态
查询表是否被禁用: is_disabled '表名' #返回布尔值
查询表是否被被启用: is_enabled '表名' #返回布尔值
get '表名','行号' #查询某一行数据
get '表名','行号','列号' #查询某一行数据
比如:get 't_ck111','18991678959' 或者 get 't_ck111','18991678959','info:kc'
查询条件筛选的行: where条件
HBase还支持limit(限制查询结果行数),STARTROW(ROWKEY起始行。会先根据这个key定位到region,再向后扫描)、STOPROW(结束行)、TIMERANGE(限定时间戳范围)、VERSIONS(版本数)、和FILTER(按条件过滤行)等。比如我们从Sariel这个rowkey开始,找下一个行的最新版本.
#通过时间戳来查找适用于同一行不同列有的不同的时间搓
比如:scan 'H_INFO_COMPANY',{TIMERANGE=>[1546661848505],[1546661848511]}
#查询表中以ff1开头的行
scan 'user',{FILTER=>"PrefixFilter('ff1')"}
#查询ROWKEY小于10的行数
scan &#39;user&#39;, FILTER&#61;>"RowFilter(<&#61;,&#39;binary:10&#39;)"
#过滤方式是通过列簇过滤&#xff0c;匹配出列簇含f的数据
scan &#39;testByCrq&#39;, FILTER&#61;>"FamilyFilter(&#61;,&#39;substring:f&#39;)"
#查询表里面的列含有 a的值
scan &#39;H_INFO_COMPANY&#39;,FILTER&#61;>"ValueFilter(&#61;,&#39;substring:a&#39;)"
修改某一行某一列数据&#xff1a;
put &#39;表名&#39;,&#39;行号&#39;,&#39;列名或者列族&#39;,&#39;修改的列值&#39;
比如: put &#39;t_ck111&#39;,&#39;18991678959&#39;,&#39;info:kc&#39;,&#39;100&#39;
插入某一行的数据:
put &#39;tablename&#39;,&#39;row&#39;,&#39;colfamily:colname&#39;,&#39;value&#39;
比如:
put &#39;t_ck111&#39;,&#39;1&#39;,&#39;info:kc&#39;,&#39;100&#39;
put &#39;t_ck111&#39;,&#39;1&#39;,&#39;info:其他字段&#39;,&#39;其他字段的值&#39;
...
put &#39;t_ck111&#39;,&#39;1&#39;,&#39;info:字段&#39;,&#39;字段值&#39;
删除指定的行:
delete &#39;tablename&#39;,&#39;row&#39;,&#39;column_name&#39;,&#39;timestramp&#39;
其中tablename为表名,row为行号,column_name为列名或者列蔟:表名,timestamp为时间戳
delete &#39;t_ck111&#39;,&#39;123456&#39;,&#39;info:kc&#39;,1544767314767
删除指定行中的某一列:
delete &#39;表名&#39;,&#39;第几行&#39;,&#39;列名&#39;,时间戳
delete &#39;t_ck111&#39;,&#39;1&#39;,&#39;info:kc&#39;,1544767314767
删除表中某一行的所有单元格:
deleteall &#39;表名&#39;, &#39;行号&#39;
比如: deleteall &#39;t_ck111&#39;, &#39;13073629033&#39;
删除表中第几行数据:
deleteall &#39;表名&#39;, &#39;第几行&#39;
比如:deleteall &#39;t_ck111&#39;, &#39;1&#39; #删除第一行数据