HBase之shell客户端-DDL / 对table操作 (3)

一  table    (DDL)

1  建表===>建表必须要有至少一个列族

//  在指定namespace下建表

create 'hbase01:tb_user1' ,'cf'             // 指定一个列族

//  没有指定namespace ,建的表会归列到 default(默认) 的namespace下

create 'tb_user' ,'cf'                             //  指定一个列族

create 'tb_user2' ,'cf1','cf2','cf3'           //  指定多个列族       

//  设置属性

create "tb_user3" , {NAME=>'cf' ,VERSIONS=>3,TTL=>240} 设置3个数据版本 过期时间

2  查看新建表的详细信息

desc 'tb_user'

3  向新建的表中添加内容 / 数据

语法 : put '表名','行键','列族名:字段属性名','value(字段对应赋的值)'

put 'tb_user','rk001','cf:name','zss'

put 'tb_user','rk001','cf:age','18'

put 'tb_user','rk001','cf:job','coder'

put 'tb_user','rk001','cf:sal','23k'

4  查看表中所有的数据/内容

scan 'tb_user'

//  查询的数据

ROW                 COLUMN+CELL                                         
 rk001              column=cf:age, timestamp=1598542966746, value=18    
 rk001              column=cf:job, timestamp=1598570238667, value=coder 
 rk001              column=cf:name, timestamp=1598542931953, value=zss  
 rk001              column=cf:sal, timestamp=1598570247929, value=23k   
1 row(s)
Took 0.0127 seconds

5  数据存储的位置

5.1  从hbase 的web页上可以看到表的信息

HBase之shell客户端-DDL / 对table操作 (3)

 

HBase之shell客户端-DDL / 对table操作 (3)

5.2  在hdfs 的web页面上有对应的目录 /表信息

HBase之shell客户端-DDL / 对table操作 (3)

1) 在hbase 的shell客户端 put 数据后 ,需要 flush一下表格 ,才能在 hdfs 的web页面上看到存储插入数据的文件hfile

2)  flush表  flush tb_name  ---> 将插入的数据写到HDFS指定的目录中

3) hbase hfile -p -f  hfile的目录(hfile的绝对路径) ==>查看存储在hdfs上的hbase指定库指定表的数据/内容

hbase hfile -p -f /hbase/data/default/tb_user/c42738045ec84c8cf4476288107965be/cf/16beefaa81424c529950cb0d78c18683

//  查询的数据 / 内容

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/apps/hadoop-3.2.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apps/hbase-2.2.5/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2020-08-28 07:23:39,292 INFO  [main] metrics.MetricRegistries: Loaded MetricRegistries class org.apache.hadoop.hbase.metrics.impl.MetricRegistriesImpl
K: rk001/cf:age/1598542966746/Put/vlen=2/seqid=8 V: 18
K: rk001/cf:job/1598543005831/Put/vlen=5/seqid=9 V: coder
K: rk001/cf:name/1598542931953/Put/vlen=3/seqid=7 V: zss

Scanned kv count -> 3

6  删除表中的数据

删除数据和更新数据的操作都是向HFile中追加内容 ,在数据的K中记录操作行为 比如 delete/deleteFamily(墓碑标记)

  • delete 删除单元格                         delete 'tb_user' , '11' ,'cf:name'
  • deleteall 删除 行/列族/单元格       deleteall 'tb_user' , '1'
  • put 更新数据 ,往表中添加新的内容

//  从 hdfs 上将删除时生成的文件绝对路径拷贝下来 ,在虚拟机上查看删除操作记录

[[email protected] bin]# hbase hfile -p -f /hbase/data/default/tb_user/c42738045ec84c8cf4476288107965be/cf/c8653bdfd1db4886b06ad5e539d12237

//  查询到的输出记录

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/apps/hadoop-3.2.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apps/hbase-2.2.5/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2020-08-28 07:29:17,818 INFO  [main] metrics.MetricRegistries: Loaded MetricRegistries class org.apache.hadoop.hbase.metrics.impl.MetricRegistriesImpl
K: rk001/cf:job/1598543005831/Delete/vlen=0/seqid=13 V: 

Scanned kv count -> 1

7  删除表

drop 'tb_user'                                  //删除默认namespace下的指定的表

drop 'hbase01:tb_user'                   // 删除指定namespace下的指定的表

8  禁用表 

将表禁用 , 不禁用的表是不能对表数据进行CRUD, 但是可以对结构进行操作

disable 'tb_user'                            //禁用默认 namespace指定的表

disable 'hbase01:tb_user'             //禁用指定namespace指定的表

9  启用表

enable 'tb_user'                        //启用默认 namespace下的指定的表

enable 'hbase01:tb_user'          //启用指定namespace下的指定的表

10  列出表中所有 regions信息

list_regions 'tb_user'       

 // 得到一个region信息  :  c42738045ec84c8cf4476288107965be

SERVER_NAME                       |             REGION_NAME   |  START_KEY |    END_KEY |  SIZE |   REQ |   LOCALITY|
 ---------------------------------------- | -------------------------------------------------------- | ---------- | ---------- | ----- | ----- | ---------- |
 linux05,16020,1598542042061 | tb_user,,1598542649041.c42738045ec84c8cf4476288107965be. |            |            |     0 |     0 |        1.0 |
 1 rows
Took 3.2631 seconds