HBase的命令行工具,最简单的接口,适合HBase管理使用,可以使用shell命令来查询HBase中数据的详细情况。
注意:如果进入hbase后长时间不操作; 发生hbase自动关闭没有了进程; 原因是内存不够;可以关闭机器;增加内存;虚拟机就扩大内存。
一、数据库操作
1、进入 hbase 客户端、帮助命令
[root@hadoop06 hbase]# bin/hbase shell
[root@hadoop06 hbase]# hbase shell(修改完环境变量)
注意:他里边所有写的命令不可以删除; 删除必须使用:
ctrl+backspace
shifit+backspace 来删除;
或者使用编辑器编辑好后,然后粘贴出来;
2.查看帮助命令
hbase(main):001:0> help
3.查看当前数据库中有哪些表
hbase(main):002:0> list
4.查看所有库 namespace 也称之为 命名空间
hbase(main):003:0> list_namespace
hbase 存放的是 一些元数据,一般不要做什么修改,default 是默认库
创建 namespace
创建数据库命名空间也可以设置一些属性
hbase(main):003:0> create_namespace ‘mydb01’,{‘createtime’=>‘2023-12-13’,‘createby’=>‘db01’}
描述信息的查看:
hbase(main):001:0> describe_namespace ‘mydb01’
对namespace属性进行修改和增加属性;
1.修改属性
METHOD=>'set‘ 下面就修改mydb01的时间+1天,并增加一个desc 属性为例说明
hbase(main):001:0> alter_namespace ‘mydb01’,{METHOD=>‘set’,‘createTime’=>‘2023-12-14’,‘desc’=>‘hbase test insert’}
删除一个属性:METHOD=>'unset‘
hbase(main):006:0> alter_namespace ‘mydb01’,{'METHOD=>‘unset’,NAME=>‘createby’}
删除 namespace
drop_namespace ‘mydb01’
库命名空间里有表,则无法直接删除库,需要先删除表,在进行drop_namespace
表的基本操作
1、查看 hfc_db 下的表
hbase(main):004:0> list_namespace_tables ‘hfc_db’
2、查看所有自己创建的表 list
3、创建表
hbase(main):002:0> create ‘hfc_db:test001’,{NAME=>‘f1’}
创建表时若不指定库在直接在default下创建表,创建表至少指定一个列族,这里创建了一个名为f1的列族;如果创建表,不指定属性信息,可以进行创建一个表
hbase:001:0> create ‘hfc_db:test2’,‘f1’
hbase:002:0> create ‘hfc_db:test3’,‘f1’,‘f2’
4、查看表详细信息
hbase(main):002:0> describe ‘hfc_db:test001’
hbase(main):002:0> desc ‘hfc_db:test001’
blocksize:(BLOCKSIZE => ‘65536’)数据块大小配置优化: blocksize默认是64K
数据块缓存的配置 BLOCKCACHE => ‘true’ 数据块缓存的配置
激进缓存的配置:(IN_MEMORY=> ‘false’)
布隆过滤器: (BLOOMFILTER = > ‘ROW’ )
TTL 生存时间,( TTL => ‘FOREVER’)
压缩:(COMPRESSION => ‘NONE’)
单元时间版本:(VERSIONS => ‘1’)
可以参考:
https://blog.csdn.net/qq_39532946/article/details/77266335
5、表信息修改:此处修改一个列族的版本号
hbase(main):001:0> alter ‘hfc_db:test001’,NAME=>‘f1’,VERSIONS=>‘2’
修改多个值
6、增加/删除列族
hfc_db:test001 增加列族
alter ‘hfc_db:test001’,‘f3’
hfc_db:test001 删除列族
alter ‘hfc_db:test001’,‘delete’=>‘f3’
7、删除表
删除表需要先进行disabkle,在进行drop
hbase:005:0> disable ‘hfc_db:test001’
hbase:001:0> drop ‘hfc_db:test001’
二、DML 操作
1、创建一个表:在 default 下创建,列族名称是 info
默认情况下他是创建的表都在defalut中;
hbase(main):001:0> create ‘student’,‘info’
2、插入数据
hbase(main):042:0> put ‘student’,‘1001’,‘info:name’,‘zhangsan’
put 表示要插入/更新数据,stu 是表名称,1001 是 rowkey,插入数据需要指定列族和列:这里的 info是列族,name 是info 下的具体列,’linghc‘ 是这个列rowkey=1001 的值,下面在info这个列族增加两个列sex 和 age
put ‘stu’,‘1001’,‘info:sex’,‘man’
put ‘stu’,‘1001’,‘info:age’,‘26’
可以给这个列簇中添加数据;
3.把刚才插入的数据进行查询出来:
get ‘studnet’,‘1001’
4. 可以继续添加第二个
put ‘student’,‘1002’,‘info:name’,‘renyy’
put ‘student’,‘1002’,‘info:name’,‘renyy’
put ‘student’,‘1002’,‘info:age’,‘24’
put ‘student’,‘1003’,‘info:name’,‘zhaoliu’
put ‘student’,‘1003’,‘info:sex’,‘woman’
put ‘student’,‘1003’,‘info:age’,‘18’
可以给相同的列族的某一个行数据增加或减少n列值是可以的,列的个数可以不一样
put ‘student’,‘1004’,‘info:name’,‘linhucong’
put ‘student’,‘1004’,‘info:sex’,‘man’
put ‘student’,‘1004’,‘info:age’,‘28’
put ‘student’,‘1004’,‘info:shcool’,‘huashanpai’
put ‘student’,‘1004’,‘info:teacher’,‘yuebuqun’
支持按列查询(可以根据列;多列来查询)
hbase(main):018:0> get’student’,‘1004’,‘info:name’,‘info:teacher’
扫描表数据(整个表)
scan ‘student’
按rowkey范围扫描 {STARTROW => ‘1001’ ,STOPROW => ‘1003’} :左闭右开,此时只查询到 1002
scan ‘student’,{STARTROW => ‘1001’ ,STOPROW => ‘1003’}
指定STOPROW 后加!,可以实现左闭右闭
hbase(main):003:0> scan ‘student’,{STARTROW => ‘1001’ ,STOPROW => ‘1004!’}
##修改数据
5、修改数据直接put 进行覆盖就行
hbase(main):001:0> put ‘student’,‘1001’,‘info:name’,‘dongfangbubai’
修改数据后,其实只是在原来的基础上增加了一条数据,查询的时候返回了时间戳最新的一个版本,旧版本的数据还在;
这里指定显示了包含最新版本在内的5条历史数据,可以通过时间戳查看
hbase(main):001:0> scan ‘student’,{RAW=>true,VERSIONS=>5}
desc ‘student’
VERSIONS => ‘1’ 默认值1.,表示最终只保留最新的一个版本的数据,旧版本的数据在适当的时候会被释放。如果想要保留最新两个版本的数据,可以将某个表的 VERSIONS 设置为 2
alter ‘student’,{NAME=>‘info’,VERSIONS=>2}
删除数据
6、删除数据
delete ‘student’,‘1001’,‘info:name’
其实是删除了当前值得最新版本的数据
标注:delete 但是数据还是存在的;
scan ‘student’,{RAW=>true,VERSIONS=>5}
彻底删除数据
deleteall ‘student’,‘1001’,‘info:name’
dleteall直接将 列族的某一个列直接删了,指定rowkey进行删除整行数据
deleteall ‘student’,‘1004’
直接删除表;数据直接彻底删除表数据,表还在,数据没了
truncate ‘student’
提示:清空表的操作顺序为先disable,然后再truncate。
10.删除表
首先需要先让该表为disable状态:
hbase(main):019:0> disable ‘student’
然后才能drop这个表:
hbase(main):020:0> drop ‘student’
提示:如果直接drop表,会报错:ERROR: Table student is enabled. Disable it first.
常用命令的总结:
HBase表的操作
这些是关于HBase在表中操作的命令。
create: 创建一个表。
list: 列出HBase的所有表。
disable: 禁用表。
is_disabled: 验证表是否被禁用。
enable: 启用一个表。
is_enabled: 验证表是否已启用。
describe: 提供了一个表的描述。
alter: 改变一个表。
exists: 验证表是否存在。
drop: 从HBase中删除表。
drop_all: 丢弃在命令中给出匹配“regex”的表。
Java Admin API: 在此之前所有的上述命令,Java提供了一个通过API编程来管理实现DDL功能。在这个org.apache.hadoop.hbase.client包中有HBaseAdmin和HTableDescriptor 这两个重要的类提供DDL功能。
关于表的操作包括(创建create,查看表列表list。查看表的详细信息desc,删除表drop,清空表truncate,修改表的定义alter)
HBase表中数据的操作
put: 把指定列在指定的行中单元格的值在一个特定的表。
get: 取行或单元格的内容。
delete: 删除表中的单元格值。
deleteall: 删除给定行的所有单元格。
scan: 扫描并返回表数据。
count: 计数并返回表中的行的数目。
truncate: 禁用,删除和重新创建一个指定的表。
Java client API: 在此之前所有上述命令,Java提供了一个客户端API来实现DML功能,CRUD(创建检索更新删除)操作更多的是通过编程,在org.apache.hadoop.hbase.client包下。 在此包HTable 的 Put和Get是重要的类。
关于数据的操作(增put,删delete,查get + scan, 改==变相的增加)