BigData-Notes/notes/Hbase Shell.md
2019-04-07 12:06:32 +08:00

7.9 KiB
Raw Blame History

Hbase 常用 Shell 命令

一、基本命令
        1.1 获取帮助
        1.2 查看服务器状态
        1.3 查看版本信息
二、关于表的操作
        2.1 查看所有表
        2.2 创建表
        2.3 查看表的基本信息
        2.4 表的启用/禁用
        2.5 检查表是否存在
        2.6 删除表
三、增删改
        3.1 添加列族
        3.2 删除列族
        3.3 更改列族存储版本的限制
        3.3 插入数据
        3.4 获取指定行、指定行中的列族、列的信息
        3.5 删除指定行、指定行中的列
四、查询
    4.1Get查询
        4.2 查询整表数据
        4.3 查询指定列簇的数据
        4.4 条件查询
        4.5 条件过滤

一、基本命令

首先打开Hbase Shell

# habse shell

1.1 获取帮助

# 获取帮助
help
# 获取命令的详细信息
help 'status'

1.2 查看服务器状态

status

1.3 查看版本信息

version

二、关于表的操作

2.1 查看所有表

list

2.2 创建表

命令格式 create '表名称', '列族名称1','列族名称2','列名称N'

# 创建一张名为Student的表,包含基本信息baseInfo、学校信息schoolInfo两个列族
create 'Student','baseInfo','schoolInfo'

2.3 查看表的基本信息

命令格式desc '表名'

describe 'Student'

2.4 表的启用/禁用

enable和disable可以启用/禁用这个表,is_enabled和is_disabled来检查表是否被禁用

# 禁用表
disable 'Student'
# 检查表是否被禁用
is_disabled 'Student'
# 启用表
enable 'Student'
# 检查表是否被启用
is_enabled 'Student'

2.5 检查表是否存在

exists 'Student'

2.6 删除表

# 删除表前需要先禁用表
disable 'Student'
# 删除表
drop 'Student'

三、增删改

3.1 添加列族

命令格式 alter '表名', '列族名'

alter 'Student', 'teacherInfo'

3.2 删除列族

命令格式alter '表名', {NAME => '列族名', METHOD => 'delete'}

alter 'Student', {NAME => 'teacherInfo', METHOD => 'delete'}

3.3 更改列族存储版本的限制

默认情况下,列族只存储一个版本的数据,如果需要存储多个版本的数据,则需要修改列族的属性。修改后可通过desc命令查看

alter 'Student',{NAME=>'baseInfo',VERSIONS=>3}

3.3 插入数据

命令格式put '表名', '行键','列族:列','值'

注意:如果新增数据的行键值、列族名、列名与原有数据完全相同,则相当于更新操作

put 'Student', 'rowkey1','baseInfo:name','tom'
put 'Student', 'rowkey1','baseInfo:birthday','1990-01-09'
put 'Student', 'rowkey1','baseInfo:age','29'
put 'Student', 'rowkey1','schoolInfo:name','Havard'
put 'Student', 'rowkey1','schoolInfo:localtion','Boston'

put 'Student', 'rowkey2','baseInfo:name','jack'
put 'Student', 'rowkey2','baseInfo:birthday','1998-08-22'
put 'Student', 'rowkey2','baseInfo:age','21'
put 'Student', 'rowkey2','schoolInfo:name','yale'
put 'Student', 'rowkey2','schoolInfo:localtion','New Haven'

put 'Student', 'rowkey3','baseInfo:name','maike'
put 'Student', 'rowkey3','baseInfo:birthday','1995-01-22'
put 'Student', 'rowkey3','baseInfo:age','24'
put 'Student', 'rowkey3','schoolInfo:name','yale'
put 'Student', 'rowkey3','schoolInfo:localtion','New Haven'

put 'Student', 'wrowkey4','baseInfo:name','maike-jack'

3.4 获取指定行、指定行中的列族、列的信息

# 获取指定行中所有列的数据信息
get 'Student','rowkey3'
# 获取指定行中指定列族下所有列的数据信息
get 'Student','rowkey3','baseInfo'
# 获取指定行中指定列的数据信息
get 'Student','rowkey3','baseInfo:name'

3.5 删除指定行、指定行中的列

# 删除指定行
delete 'Student','rowkey3'
# 删除指定行中指定列的数据
delete 'Student','rowkey3','baseInfo:name'

四、查询

hbase中访问数据有两种基本的方式

  • 按指定rowkey获取唯一一条数据get方法

  • 按指定条件获取数据scan方法

get访问指定key的数据而scan可以设置begin和end来访问一个范围内所有的数据。get本质上就是begin和end相同的一种特殊的scan。

4.1Get查询

# 获取指定行中所有列的数据信息
get 'Student','rowkey3'
# 获取指定行中指定列族下所有列的数据信息
get 'Student','rowkey3','baseInfo'
# 获取指定行中指定列的数据信息
get 'Student','rowkey3','baseInfo:name'

4.2 查询整表数据

scan 'Student'

4.3 查询指定列簇的数据

scan 'Student', {COLUMN=>'baseInfo'}

4.4 条件查询

# 查询指定列的数据
scan 'Student', {COLUMNS=> 'baseInfo:birthday'}

除了列COLUMNS修饰词外HBase还支持Limit(限制查询结果行数),STARTROWROWKEY起始行,会先根据这个key定位到region,再向后扫描)、STOPROW(结束行)、TIMERANGE(限定时间戳范围)、VERSIONS(版本数)、和FILTER(按条件过滤行)等。

如下代表从rowkey2这个rowkey开始查找下两个行的最新3个版本的name列的数据

scan 'Student', {COLUMNS=> 'baseInfo:name',STARTROW => 'rowkey2',STOPROW => 'wrowkey4',LIMIT=>2, VERSIONS=>3}

4.5 条件过滤

Filter可以设定一系列条件来进行过滤。如我们要限制某个列的值大于等于24

scan 'Student', FILTER=>"ValueFilter(=,'binary:24')"

值包含yale这个值

scan 'Student', FILTER=>"ValueFilter(=,'substring:yale')"

列名中的前缀为birth的

scan 'Student', FILTER=>"ColumnPrefixFilter('birth')"

FILTER中支持多个过滤条件通过括号、AND和OR的条件组合

# 列名中的前缀为birth且列值中包含1998的数据
scan 'Student', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1998')"

PrefixFilter是对Rowkey的前缀进行判断

scan 'Student', FILTER=>"PrefixFilter('wr')"