Hbase常见的操作

本文详细介绍了HBase的操作,包括空间管理、表的管理、增删改查等。创建表的方式有指定列族式和指定字段式,可以修改表的压缩方式。查询表数据使用scan命令,支持多种过滤条件。此外,还涵盖了插入、更新和删除数据的语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

空间的管理:
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 'user', FILTER=>"RowFilter(<=,'binary:10')"

#过滤方式是通过列簇过滤,匹配出列簇含f的数据
scan 'testByCrq', FILTER=>"FamilyFilter(=,'substring:f')"

#查询表里面的列含有 a的值
scan 'H_INFO_COMPANY',FILTER=>"ValueFilter(=,'substring:a')"

修改某一行某一列数据:
put '表名','行号','列名或者列族','修改的列值'
比如: put 't_ck111','18991678959','info:kc','100'

插入某一行的数据:
put 'tablename','row','colfamily:colname','value'
比如:
put 't_ck111','1','info:kc','100'
put 't_ck111','1','info:其他字段','其他字段的值'
...
put 't_ck111','1','info:字段','字段值'

删除指定的行:
delete 'tablename','row','column_name','timestramp'
其中tablename为表名,row为行号,column_name为列名或者列蔟:表名,timestamp为时间戳
delete 't_ck111','123456','info:kc',1544767314767

删除指定行中的某一列:
delete '表名','第几行','列名',时间戳
delete 't_ck111','1','info:kc',1544767314767

删除表中某一行的所有单元格:
deleteall  '表名', '行号'
比如: deleteall  't_ck111', '13073629033'

删除表中第几行数据:
deleteall '表名', '第几行'
比如:deleteall 't_ck111', '1'  #删除第一行数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值