Hbase的shell操作

DDL

创建namespace

create_namespace “namespace的名字”

创建表

help “create”
hbase> create ‘ns1:t1’, {NAME => ‘f1’, VERSIONS => 5}
hbase> create ‘t1’, {NAME => ‘f1’}, {NAME => ‘f2’}, {NAME => ‘f3’}
hbase> create ‘t1’, ‘f1’, ‘f2’, ‘f3’
hbase> create ‘t1’, {NAME => ‘f1’, VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}
hbase> create ‘t1’, {NAME => ‘f1’, CONFIGURATION => {‘hbase.hstore.blockingStoreFiles’ => ‘10’}}

语法1:craete “namespace:表名”,“family column”,“family column”
l例子:create “mydatabase:test1”,“info1”,“info2”

语法2:
{表的一些属性 必须包含列族}
create “namespace:表名”,{NAME => “”,VERSIONS => 3,TTL =>},{NAME => “”}
常用的属性:
VERSIONS => 1 指定数据版本, TTL => 2592000 指定数据存储周期
create “mydatabase:test2”,{NAME => “info1”},{NAME => “info2”,VERSIONS => 3}

{}描述的是一个列族信息
建表过程中 没有指定版本信息 默认1个 默认存储周期 永久存储 ttl=> forever

查看表的列表

list
hbase> list 查看所有的表列表
hbase> list ‘abc.’ 查看所有的指定字符开头的表 default 下的
hbase> list 'ns:abc.
’ 查看指定的namespace下的所有的指定字符开头的表列表
list ‘mydatabase:t.
hbase> list 'ns:.
’ 查看指定namespace下的所有表列表
list “mydatabase:.*”

查看表的详细信息

help ‘describe’
hbase> describe ‘t1’ 查看default下的表的描述信息
hbase> describe ‘ns1:t1’ 查看指定namespace下的所有表描述信息的
简写:简写的常用
hbase> desc ‘t1’
hbase> desc ‘ns1:t1’

查看表是否禁用

hbase中表有两种状态:
启用 enable 可以执行操作的
禁用 disable 不可以执行操作
is_disabled 查看表是否禁用 禁用true 启用 false
is_disabled “namespace:表名”
is_disabled “mydatabase:test1”
is_enabled 查看表是否启用 启用 true 禁用 false
is_enabled “namespace:表名”
is_enabled “mydatabase:test1”

默认建表的时候 是启用状态

禁用表和启用表的相关操作

disable “namespace:表名”
enable “namespace:表名”

disable “test1”
is_disabled “test1”

enable “test1”
is_disabled “test1”

disable_all “namespace:.|t.” 禁用指定的所有表
enable_all “namespace:.|t.” 启用指定的所有表
disable_all “mydatabase:.*”
is_disabled “mydatabase:test1”

enable_all “mydatabase:.*”
is_disabled “mydatabase:test1”

修改表

alter
1)修改某一个列族的属性信息
alter ‘namespace:表名’, ‘列族’, {NAME => ‘列族’, IN_MEMORY => true}, {NAME => ‘列族’, VERSIONS => 5}
alter “mydatabase:test1”,{NAME => “info1”,VERSIONS => 3}
2)添加列族
语法同上
alter “mydatabase:test1”,{NAME => “info3”,VERSIONS => 3}
修改表的时候 列族不存在 事实上就是添加
alter “mydatabase:test1”,“info4”,{NAME => “info5”,VERSIONS => 3}
3)删除列族
hbase> alter ‘namespace:表名’, NAME => ‘列族’, METHOD => ‘delete’
hbase> alter ‘namespace:表名’, ‘delete’ => ‘列族’
METHOD 用于指定对当前列族的操作
alter “mydatabase:test1”,NAME => “info5”,METHOD => ‘delete’
alter “mydatabase:test1”,‘delete’ => “info4”

注意: 表中至少有一个列族 如果表中只剩一个列族 不允许删除

删除表

先禁用表 再删除表
drop “namespace:表名”

disable “mydatabase:test1”
drop “mydatabase:test1”

drop_all
hbase> drop_all ‘namespace:.|t.
删除指定的所有表

DML

Group name: dml
Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve

向表中添加数据 put

行键 列族:列 值
hbase> put ‘namespace:表名’, ‘行键’, ‘列族:列’, ‘列的值’,【ts1(时间戳 不给默认系统时间戳)】

put “mydatabase:test2”,“rk001”,“info1:name”,“zs”
put “mydatabase:test2”,“rk001”,“info1:age”,“18”
put “mydatabase:test2”,“rk001”,“info1:addr”,“hebei”

查询表数据

1.扫描查询 scan

1)全表扫描 表下的所有列族的 所有列 全部显示**
scan “namespace:表名”
scan “user_info”
2)指定列显示
scan “namespace:表名”,{COLUMNS => ‘列族:列名’}
scan “namespace:表名”,{COLUMNS => [‘列族:列名’,“列族:列名”]}

scan “user_info”,{COLUMNS => “base_info:age”}
scan “user_info”,{COLUMNS => [“base_info:name”,“base_info:age”]}

3)指定显示行数 LIMIT
scan “namespace:表名”,{COLUMNS => [‘列族:列名’,“列族:列名”],LIMIT => 需要显示的行数}
scan “user_info”,{COLUMNS => “base_info:age”,LIMIT => 5}

4)指定rowkey范围显示
STARTROW 指定起始的行键 ENDROW 指定结束的行键
scan “namespace:表名”,{COLUMNS => [‘列族:列名’,“列族:列名”],LIMIT=> ,STARTROW => “”,ENDROW => “”}
scan “user_info”,{STARTROW => “baiyc_20150716_0008”,ENDROW => “zhangsan_20150701_0004”}

这种显示方式 包含左边界 不包含右边界
只指定STARTROW 不指定 ENDROW 显示到结尾

scan “user_info”,{COLUMNS => “base_info:age”,STARTROW => “baiyc_20150716_0008”,ENDROW => “zhangsan_20150701_0004”}

5)可以指定时间戳范围 查询数据 TIMERANGE => [起始时间戳,终止的时间戳]
scan “namespace:表名”,{COLUMNS=>"",TIMERANGE=>,LIMIT=>}
scan “user_info”,{COLUMNS => “base_info:name”,TIMERANGE => [1558844852080,1558844855890]}
时间戳范围 含头 不含尾

总结 scan进行表数据查询的时候2种方式
1)全表扫描
2)指定rowkey范围进行查询

2.单条查询 get

1)查询指定行键的 只能查询一条数据的
hbase> get ‘namespace:表名’,“行键”
get “user_info”,“zhangsan_20150701_0004”
2)指定需要查询的一行数据的列
COLUMN => []
get “namespace:表名”,“行键”,{COLUMN => [“列族:列”,“列族:列”]}
get “user_info”,“zhangsan_20150701_0004”,{COLUMN => [“base_info:name”,“base_info:age”]}

3)指定需要查询一行数据的 时间戳的数据 TIMESTAMP => 时间戳
查看某一列指定版本的数据
get “user_info”,“zhangsan_20150701_0004”,{TIMESTAMP => 1558844848954}

get “user_info”,“zhangsan_20150701_0004”,{COLUMN => “base_info:age”,TIMESTAMP => 1558847233830}

4)可以指定查询的数据的 时间戳范围的
get “user_info”,“zhangsan_20150701_0004”,{TIMERANGE => [1558844823464,1558847245992]}
时间戳 含头不含尾的

3)删除表数据 delete
hbase> delete ‘namespace:表名’, ‘行键’, ‘列族:列’, 时间戳
base_info:age timestamp=1558847233830, value=25
delete “user_info”,“zhangsan_20150701_0004”,“base_info:age”,

查询结果:
get “user_info”,“zhangsan_20150701_0004”,{COLUMN => “base_info:age”, VERSIONS => 3}

4)清空表数据
truncate “namespace:表名”

is_disabled “user_info”
1.- Disabling table… 禁用表
2.- Truncating table… 清空表
3.启用表

练习

创建 user 表,包含 info、data 两个列簇
create ‘user’, ‘info1’, ‘data1’
create ‘user’, {NAME => ‘info’, VERSIONS => ‘3’}
向 user 表中插入信息,row key 为 rk0001,列簇 info 中添加 name 列标示符,值为 zhangsan
put ‘user’, ‘rk0001’, ‘info:name’, ‘zhangsan’
向 user 表中插入信息,row key 为 rk0001,列簇 info 中添加 gender 列标示符,值为 female
put ‘user’, ‘rk0001’, ‘info:gender’, ‘female’
向 user 表中插入信息,row key 为 rk0001,列簇 info 中添加 age 列标示符,值为 20
put ‘user’, ‘rk0001’, ‘info:age’, 20
向 user 表中插入信息,row key 为 rk0001,列簇 data 中添加 pic 列标示符,值为 picture
put ‘user’, ‘rk0001’, ‘data:pic’, ‘picture’
获取 user 表中 row key 为 rk0001 的所有信息
get ‘user’, ‘rk0001’
获取 user 表中 row key 为 rk0001,info 列簇的所有信息
get ‘user’, ‘rk0001’, ‘info’
获取 user 表中 row key 为 rk0001,info 列簇的 name、age 列标示符的信息
get ‘user’, ‘rk0001’, ‘info:name’, ‘info:age’
获取 user 表中 row key 为 rk0001,info、data 列簇的信息
get ‘user’, ‘rk0001’, ‘info’, ‘data’
get ‘user’, ‘rk0001’, {COLUMN => [‘info’, ‘data’]}
get ‘user’, ‘rk0001’, {COLUMN => [‘info:name’, ‘data:pic’]}
获取 user 表中 row key 为 rk0001,列簇为 info,版本号最新 5 个的信息
get ‘user’, ‘rk0001’, {COLUMN => ‘info’, VERSIONS => 2}
get ‘user’, ‘rk0001’, {COLUMN => ‘info:name’, VERSIONS => 5}
get ‘user’, ‘rk0001’, {COLUMN => ‘info:name’, VERSIONS => 5, TIMERANGE =>
[1392368783980, 1392380169184]}
获取 user 表中 row key 为 rk0001,cell 的值为 zhangsan 的信息
get ‘people’, ‘rk0001’, {FILTER => “ValueFilter(=, ‘binary:图片’)”}
获取 user 表中 row key 为 rk0001,列标示符中含有 a 的信息
get ‘people’, ‘rk0001’, {FILTER => “(QualifierFilter(=,‘substring:a’))”}
put ‘user’, ‘rk0002’, ‘info:name’, ‘fanbingbing’
put ‘user’, ‘rk0002’, ‘info:gender’, ‘female’
put ‘user’, ‘rk0002’, ‘info:nationality’, ‘中国’
get ‘user’, ‘rk0002’, {FILTER => “ValueFilter(=, ‘binary:中国’)”}
查询 user 表中的所有信息
scan ‘user’
查询 user 表中列簇为 info 的信息
scan ‘user’, {COLUMNS => ‘info’}
scan ‘user’, {COLUMNS => ‘info’, RAW => true, VERSIONS => 5}
scan ‘persion’, {COLUMNS => ‘info’, RAW => true, VERSIONS => 3}
Scan 时可以设置是否开启 Raw 模式,开启 Raw 模式会返回包括已添加删除标记但是未实际删除的数据。
查询 user 表中列簇为 info 和 data 的信息
scan ‘user’, {COLUMNS => [‘info’, ‘data’]}
scan ‘user’, {COLUMNS => [‘info:name’, ‘data:pic’]}
查询 user 表中列簇为 info、列标示符为 name 的信息
scan ‘user’, {COLUMNS => ‘info:name’}
查询 user 表中列簇为 info、列标示符为 name 的信息,并且版本最新的 5 个
scan ‘user’, {COLUMNS => ‘info:name’, VERSIONS => 5}
查询 user 表中列簇为 info 和 data 且列标示符中含有 a 字符的信息
scan ‘user’, {COLUMNS => [‘info’, ‘data’], FILTER => “(QualifierFilter(=,‘substring:a’))”}
查询 user 表中列簇为 info,rk 范围是[rk0001, rk0003)的数据
scan ‘people’, {COLUMNS => ‘info’, STARTROW => ‘rk0001’, ENDROW => ‘rk0003’}
查询 user 表中 row key 以 rk 字符开头的
scan ‘user’,{FILTER=>“PrefixFilter(‘rk’)”}
查询 user 表中指定范围的数据
scan ‘user’, {TIMERANGE => [1392368783980, 1392380169184]}
删除数据
删除 user 表 row key 为 rk0001,列标示符为 info:name 的数据
delete ‘people’, ‘rk0001’, ‘info:name’
删除 user 表 row key 为 rk0001,列标示符为 info:name,timestamp 为 1392383705316 的数据
delete ‘user’, ‘rk0001’, ‘info:name’, 1392383705316
清空 user 表中的数据
truncate ‘people’
修改表结构
首先停用 user 表(新版本不用)
disable ‘user’
添加两个列簇 f1 和 f2
alter ‘people’, NAME => ‘f1’
alter ‘user’, NAME => ‘f2’
启用表
enable ‘user’
###disable ‘user’(新版本不用)
删除一个列簇:
alter ‘user’, NAME => ‘f1’, METHOD => ‘delete’ 或 alter ‘user’, ‘delete’ => ‘f1’
添加列簇 f1 同时删除列簇 f2
alter ‘user’, {NAME => ‘f1’}, {NAME => ‘f2’, METHOD => ‘delete’}
将 user 表的 f1 列簇版本号改为 5
alter ‘people’, NAME => ‘info’, VERSIONS => 5
启用表
enable ‘user’
删除记录
delete ‘person’, ‘rk0001’, ‘info:name’
删除字段
delete ‘person’, ‘rk0001’, ‘info:name’
删除表
disable ‘user’
drop ‘user’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值