热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hbase常见的操作

空间的管理: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;  #删除第一行数据


推荐阅读
author-avatar
叫爸算了_459
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有