HBASE学习笔记-HBASE SHELL

时间:2024-03-09 17:04:43

Group name: namespace

对数据库的操作

Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables

创建
create_namespace
create_namespace 'bigdata28'

查看
list_namespace 

NAMESPACE                                     
bigdata28 -- 创建的
default --默认命名空间
hbase  --用于存储命名空间以及表的元数据信息

查看详细信息
describe_namespace

describe_namespace 'bigdata28'

删除命名空间
drop_namespace
drop_namespace 'bigdata28'

查看命名空间下的表
list_namespace_tables

list_namespace_tables 'default'

Group name: ddl

对表进行操作

Commands: alter, alter_async, alter_status, clone_table_schema, create, descr
ibe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, list_regions, locate_region, show_filters

创建表
create 
# t 表示表名称
# f 表示列族

create 't1', 'f1', 'f2', 'f3'

create 'bigdata28:veh_pass','veh_info','pass_info'

查看表
list_namespace_tables 'bigdata28'

list

查看表的描述信息

describe "bigdata28:veh_pass"

# 每个列族都有对应一个描述信息 
#  VERSIONS 表示当前列族中存储的数据对应的最多的版本数
{NAME => 'pass_info', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}                                                                                                                
{NAME => 'veh_info', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}

修改表信息
alter

alter 'bigdata28:veh_pass', {NAME => 'pass_info', IN_MEMORY => 'true'}

# 表示将当前pass_info列族中的数据版本设置为最高可保留3个版本的数据 
alter 'bigdata28:veh_pass', {NAME => 'pass_info', VERSIONS => 3}

删除表
drop

drop 't1'
# 对于表删除时,需要对其进行关闭之后再进行删除
ERROR: Table t1 is enabled. Disable it first.

关闭或开启表
disable 't1'
enable 't1'

查看表的Region信息
list_regions 

list_regions "bigdata28:veh_pass"

Hbase中的数据是存储在HDFS中,那么如何进行存储的?
Hbase的数据存储目录在 /hbase/data/ 路径中
命名空间、表都是以目录的形式存在的
在表目录下,会存在有一个Region目录,Region是按照RowKey进行划分的(当数据量较少时,仅有一个) 在Region下对应有列族的目录,列族目录下存储具体的数据 ,当数据添加到HBASE后先放在内存当中,之后再保存到对于HDFS路径中

Group name: dml

对数据进行操作

Commands: append, count, delete, deleteall, get, get_counter, get_splits, inc
r, put, scan, truncate, truncate_preserve

添加数据
put 
# ns1 表示命名空间
# t1 表示表名称
# r1 表示RowKey信息 
# c1 表示列族及列信息 
# value 表示对应具体列下的单个数据 
put 'ns1:t1', 'r1', 'c1', 'value'

put 'bigdata28:veh_pass','pass1','veh_info:hphm','ASJ666'
put 'bigdata28:veh_pass','pass1','veh_info:cllx','K33'
put 'bigdata28:veh_pass','pass1','veh_info:clys','red'


put 'bigdata28:veh_pass','pass12','veh_info:hphm','ASJ888'
put 'bigdata28:veh_pass','pass12','veh_info:cllx','K13'
put 'bigdata28:veh_pass','pass12','veh_info:clys','w'


# 添加数据时指定时间戳
put 't1', 'r1', 'c1', 'value', ts1

put 'bigdata28:veh_pass','pass9','veh_info:hphm','ASJ000_5', 1709279201100
# 展示数据时,按照时间戳从大到小依次展示

put命令可以按照 Rowkey 列族 列 添加单个数据

查看数据
get

get 'ns1:t1', 'r1'
get 'bigdata28:veh_pass','pass1'

# 指定列进行查看数据
get 'bigdata28:veh_pass','pass9', {COLUMN => ['veh_info:cllx', 'veh_info:hphm']}

# Column family cllx does not exist 表示给定的列族不存在,列需要使用列族对其进行修饰

get 可以根据rowKey信息获取到一行数据

查看所有数据
scan 
scan 'bigdata28:veh_pass'

# 扫描某个列下所有数据
scan 'bigdata28:veh_pass',{COLUMNS => 'veh_info:hphm'}
# 获取多列数据
scan 'bigdata28:veh_pass',{COLUMNS => ['veh_info:hphm','veh_info:cllx']}

# 限制展示行数(RowKey)
scan 'bigdata28:veh_pass',{LIMIT => 3}
scan 'bigdata28:veh_pass',{COLUMNS => 'veh_info:hphm',LIMIT => 3}


# 指定范围过滤数据
# STARTROW指定开始的RowKey
# STARTROW是包含的 
scan 'bigdata28:veh_pass',{STARTROW => 'pass12'}
# STOPROW可以指定结束Rowkey,并且不包含
scan 'bigdata28:veh_pass',{STARTROW => 'pass12',STOPROW => 'pass8'}

# 案例:
# 需求:获取pass1开头的所有数据 
scan 'bigdata28:veh_pass',{STARTROW => 'pass1',STOPROW => 'pass8'}
# 当添加了pass7,当前的扫描的数据不符合规范
scan 'bigdata28:veh_pass',{STARTROW => 'pass1',STOPROW => 'pass1~'}
# 在设定STARTROW及STOPROW范围时,可以参考ASC码表中的最大值和最小值 

# 扫描所有数据
scan 'bigdata28:veh_pass', {RAW => true, VERSIONS => 4}

scan 可以扫描当前表中的所有数据

删除

delete 'ns1:t1', 'r1', 'c1', ts1

delete 'bigdata28:veh_pass','pass9','veh_info:hphm', 1709279201176

# 删除某个RowKey下的 一列
delete 'bigdata28:veh_pass','pass9','veh_info:hphm'

# 当删除数据时,实际上是对数据进行标记 type=Delete
# 在之后的某一时刻会对标记数据进行批量整理 

deleteall
deleteall 'bigdata28:veh_pass','pass9'

# 删除列族信息 可以使用表的Alter语法
alter 'bigdata28:veh_pass',{ METHOD => 'delete', NAME => 'pass_info' }

count
# 统计表的行数
count 'bigdata28:veh_pass'

truncate
# 清空表
# 立即生效
truncate 'bigdata28:veh_pass'