大数据—-33.hbase中的shell文件操作

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, 改==变相的增加)

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/4290bd557a.html