[toc]

1. 大纲

启动hbase服务: start-hbase.sh
停止hbase服务: stop-hbase.sh
启动shelll: hbase shell

hbase shell命令描述
alter修改列族(column family)模式
count统计表中行的数量
create创建表
describe显示表相关的详细信息
delete删除指定对象的值(可以为表,行,列对应的值,另外也可以指定时间戳的值)
deleteall删除指定行的所有元素值
disable使表无效
drop删除表
enable使表有效
exists测试表是否存在
exit退出hbase shell
get获取行或单元(cell)的值
incr增加指定表,行或列的值
list列出hbase中存在的所有表
put向指向的表单元添加值
tools列出hbase所支持的工具
scan通过对表的扫描来获取对用的值
status返回hbase集群的状态信息
shutdown关闭hbase集群(与exit不同)
truncate重新创建指定表
version返回hbase版本信息

来自 <https://www.cnblogs.com/cxzdy/p/5583239.html>

2. ddl命令

2.1. 创建表create

注意:创建表时只需要指定列族名称,不需要指定列名。

# 语法
create '表名', {NAME => '列族名1'}, {NAME => '列族名2'}, {NAME => '列族名3'}
# 此种方式是上上面的简写方式,使用上面方式可以为列族指定更多的属性,如VERSIONS、TTL、BLOCKCACHE、CONFIGURATION等属性
create '表名', '列族名1', '列族名2', '列族名3'

create '表名', {NAME => '列族名1', VERSIONS => 版本号, TTL => 过期时间, BLOCKCACHE => true}


# 示例
create 'tbl_user', 'info', 'detail'
create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}

2.2 修改(添加、删除)表结构Schema alter

添加一个列族

# 语法 
alter '表名', '列族名'

# 示例
alter 'tbl_user', 'address'

删除一个列族

# 语法 
alter '表名', {NAME=> '列族名', METHOD=> 'delete'}

# 示例
alter 'tbl_user', {NAME=> 'address', METHOD=> 'delete'}

修改列族信息

# 修改f1列族的版本为5
alter 't1', NAME => 'f1', VERSIONS => 5

# 修改多个列族,修改f2为内存,版本号为5
alter 't1', 'f1', {NAME => 'f2', IN_MEMORY => true}, {NAME => 'f3', VERSIONS => 5}

# 也可以修改table-scope属性,例如MAX_FILESIZE, READONLY,MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH等。
# 例如,修改region的最大大小为128MB:
alter 't1', MAX_FILESIZE => '134217728'

2.3 删除表drop

需要先禁用表,然后再删除表,启用的表是不允许删除的

# 语法
disable '表名'
drop '表名'

# 示例
disable 'tbl_user'
drop 'tbl_user'

2.4 显示hbase所支持的所有过滤器

show_filters

过滤器用于get和scan命令中作为筛选数据的条件,类型关系型数据库中的where的作用

3. dml命令

3.1. 插入或者修改数据put

# 语法
# 当列族中只有一个列时'列族名:列名'使用'列族名'
put '表名', '行键', '列族名', '列值'
put '表名', '行键', '列族名:列名', '列值'

# 示例

# 创建表
create 'tbl_user', 'info', 'detail', 'address'

# 第一行数据
put 'tbl_user', 'mengday', 'info:id', '1'
put 'tbl_user', 'mengday', 'info:name', '张三'
put 'tbl_user', 'mengday', 'info:age', '28'

put 'tbl_user', 'mengday', 'detail:birthday', '1990-06-26'
put 'tbl_user', 'mengday', 'detail:email', 'abc@163.com'
put 'tbl_user', 'mengday', 'detail:create_time', '2019-03-04 14:26:10'

put 'tbl_user', 'mengday', 'address', '上海市'

# 第二行数据
put 'tbl_user', 'vbirdbest', 'info:id', '2'
put 'tbl_user', 'vbirdbest', 'info:name', '李四'
put 'tbl_user', 'vbirdbest', 'info:age', '27'

put 'tbl_user', 'vbirdbest', 'detail:birthday', '1990-06-27'
put 'tbl_user', 'vbirdbest', 'detail:email', 'xxx@gmail.com'
put 'tbl_user', 'vbirdbest', 'detail:create_time', '2019-03-05 14:26:10'

put 'tbl_user', 'vbirdbest', 'address', '北京市'


# 第一行数据
put 'tbl_user', 'xiaoming', 'info:id', '3'
put 'tbl_user', 'xiaoming', 'info:name', '王五'
put 'tbl_user', 'xiaoming', 'info:age', '26'

put 'tbl_user', 'xiaoming', 'detail:birthday', '1990-06-28'
put 'tbl_user', 'xiaoming', 'detail:email', 'xyz@qq.com'
put 'tbl_user', 'xiaoming', 'detail:create_time', '2019-03-06 14:26:10'

put 'tbl_user', 'xiaoming', 'address', '杭州市'

3.2 全表扫描scan

# 获取表的所有数据
# 语法
scan '表名'
# 示例
scan 'tbl_user'

# 扫描整个列簇
# 语法
scan '表名', {COLUMN=>'列族名'}
# 示例
scan 'tbl_user', {COLUMN=>'info'}

# 扫描整个列簇的某个列
# 语法
scan '表名', {COLUMN=>'列族名:列名'}    
# 示例
scan 'tbl_user', {COLUMN=>'info:age'}

3.3 获取数据get

# 语法
get '表名', '行键'
# 示例
get 'tbl_user', 'mengday'


# 根据某一行某列族的数据
# 语法
get '表名', '行键', '列族名'
# 示例
get 'tbl_user', 'mengday', 'info'

# 获取rowKey=r1并且 1552819392398 <= 时间戳范围 < 1552819398244
get 't1', 'r1', {TIMERANGE => [1552819392398, 1552819398244]}

# 获取指定列的值,多个值使用数组表示
get 't1', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

3.4 删除某个列族中的某个列delete

# 语法
delete '表名', '行键', '列族名:列名'


create 'tbl_test', 'columnFamily1'
put 'tbl_test', 'rowKey1', 'columnFamily1:column1', 'value1'
put 'tbl_test', 'rowKey1', 'columnFamily1:column2', 'value2'

delete 'tbl_test', 'rowKey1', 'columnFamily1:column1'

3.5 删除某行数据deleteall

# 语法
deleteall '表名', '行键'

# 示例
deleteall 'tbl_test', 'rowKey1'

3.6 清空整个表的数据truncate

truncate '表名'

3.7 LIMIT 返回的行数

# 语法
scan '表名', { LIMIT => 行数}

# 示例
scan 'tbl_user', { LIMIT => 2 }

3.8 FILTER条件过滤器

过滤器之间可以使用AND、OR连接多个过滤器。
ValueFilter 值过滤器

# 语法:binary 等于某个值
scan '表名', FILTER=>"ValueFilter(=,'binary:列值')"
# 语法 substring:包含某个值
scan '表名', FILTER=>"ValueFilter(=,'substring:列值')"

# 示例
scan 'tbl_user', FILTER=>"ValueFilter(=, 'binary:26')"
scan 'tbl_user', FILTER=>"ValueFilter(=, 'substring:6')"

ColumnPrefixFilter 列名前缀过滤器

# 语法 substring:包含某个值
scan '表名', FILTER=>"ColumnPrefixFilter('列名前缀')"

# 示例
scan 'tbl_user', FILTER=>"ColumnPrefixFilter('birth')"
# 通过括号、AND和OR的条件组合多个过滤器
scan 'tbl_user', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter(=,'substring:26')"

https://blog.csdn.net/u013980127/article/details/52443155 https://blog.csdn.net/vbirdbest/article/details/88236575