HBase常用脚本

建表

-- create 表名, 列簇,只有列簇定义,无列定义,可以多个列,不要求每行的列相同
create 'user', 'basicinfo'

插入数据

-- put 表名, rowkey, 列簇:列, 列值
put 'user', '1001', 'basicinfo:name', 'roy'
put 'user', '1001', 'basicinfo:age', 1 8
put 'user', '1001', 'basicinfo:salary', 10000

查询

-- get 表名, rowkey
get 'user', '1001'

-- get 表名, rowkey, 列簇:列
get 'user', '1001', 'basicinfo:name'

-- get 表名, rowkey, {COLUMN => 列簇:列, VERSIOn => ?}
get 'user', '1001', {COLUMN => 'basicinfo:name', VERSIONS => 3}

-- scan 表名 查询多行值
scan 'user'

-- 范围查询,左开右闭
scan 'user', {STARTROW => '1001',STOPROW => '1003'}

获取帮助

-- help
help 'get'

desc 查看表详细信息

desc 'user'

count 统计行数

count 'user'

alter 修改表结构

alter 'user', {NAME => 'basicinfo', VERSION = 3}

delete

生成 type = Delete 类型的记录,在某个时间点,由数据库统一删除处理

delete 'user', '1002', 'basicinfo:sex'

deleteall

生成 type = DeleteFamily 类型的记录,在某个时间点,由数据库统一删除处理

deleteall 'user', '1003'

truncate

-- truncate 将表的数据全部删除掉,不要在生产环境中使用
truncate 'user'

drop

disable 'user'
drop 'user'
-- 启用表 enable 'user'

三种查询

get 单值查询
scan 全量
scan 范围

** 只有列簇定义,列簇需要对齐,没有列的定义;

namespace

list_namespace -- 列出所有命名空间,对应HBase目录,命名存储空间之间相互隔离
create_namespace 'my_ns' -- 创建命名空间
create 'my_ns:my_table', 'fam' -- 在命名空间下创建表

** 不指定命名空间时,在 default命名空间下面

version

表中 {row, column, version} --> cell 可以确定一行

scan 'user', {RAW => true, VERSION => 10}

给basicinfo声明最多保存5个版本

alter 'user', NAME => 'basicinfo', VERSION => 5

指定最少两个版本

alter 'user', NAME => 'basicinfo', MIN_VERSION => 2

查询多个版本的数据

get 'user', '1001', {COLUMN => 'basicinfo:name', VERSION => 3}

查询10个历史版本

scan 'user', {RAW => true, VERSION => 10}

rest风格访问

hadoop01:9090/user/regions

类似cas 并发操作

check=put
check=delete

待补充

LSM树

java客户端

存储原理

region

你可能感兴趣的:(HBase常用脚本)