当前位置: 代码网 > it编程>数据库>Mysql > HBase命令行操作

HBase命令行操作

2024年07月28日 Mysql 我要评论
更改Student表的列族baseInfo的存储版本的限制为3(默认情况下,列族只存储一个版本的数据,如果需要存储多个版本的数据,则需要修改列族的属性。HBase数据库的命令行操作也就是通过HBase的命令行终端并通过命令的形式来操作HBase数据库,即HBase数据库的表、数据等的增删改查等操作。如果是不存在的就添加,如果存在则后运行的列族信息覆盖前运行的列族信息,。:下面将以Student表的操作为例,并且有些命令只提供示例不提供说明(有时候一例胜千言,学习是需要一定的关联、联想、抽象能力的)

2. hbase数据库——命令行操作

2.1. 启动hbase及其命令行

启动hbase及其命令行一般流程:

  1. hbase安装完成并且能够正常启动与使用

  2. 开启hbase集群${hbase_home}/bin/start-hbase.sh

    注意:hbase非单机模式启动前你需要先启动hadoop集群${hadoop_home}/sbin/start-dfs.sh

  3. 打开hbase的命令行${hbase_home}/bin/hbase shell

eg:我的${hadoop_home}=/usr/local/hadoop2${hbase_home}=/usr/local/hbase,并且hbase集群配置是非单机模式的。所以我的前置操作如下:

# 1.启动hadoop集群
/usr/local/hadoop2/sbin/start-dfs.sh
# 2.启动hbase集群
/usr/local/hbase/bin/start-hbase.sh
# 3.启动hbase命令行
/usr/local/hbase/bin/hbase shell

一些可能会用到的hbase操作知识:



2.2. hbase数据库的常用操作命令

注意:下面将以student表的操作为例,并且有些命令只提供示例不提供说明(有时候一例胜千言,学习是需要一定的关联、联想、抽象能力的)

一些杂七杂八的思考:

2.2.1. 获取帮助命令

命令格式:help ['具体命令']

使用示例:

# 获取hbase命令帮助(会输出所有hbase命令及详情?)
help

#获取status这条具体命令的详细信息
help 'status'

2.2.2. hbase系统层次操作命令

命令格式格式使用示例示例任务
查看服务器状态statusstatus查看服务器状态
查看版本信息versionversion查看版本信息
查询有哪些表listlist查询有哪些表
检查表是否存在exists ‘表名’exists ‘student’检查student表是否存在

表的启用/禁用命令

eg:使用示例(以student表为例):

# 禁用表
disable 'student'

# 检查表是否被禁用
is_disabled 'student'

# 启用表
enable 'student'

# 检查表是否被启用
is_enabled 'student'

2.2.3. hbase的表层次操作命令

3.1、创建表

命令格式:

create ‘表名称’, ‘列族名称1’,‘列族名称2’, ... ,‘列名称n’
#或:
create '表名', {name=>'列族名',versions=>'值',...}, {name=>'列族名',versions=>'值',...},...

eg:创建一张名为student的表,包含基本信息(baseinfo)、学校信息(schoolinfo)两个列族

create 'student','baseinfo','schoolinfo'

3.2、查看表的基本信息

命令格式:

desc ‘表名’
#或者?
describe ‘表名’

eg:查看我们创建的那一张student表的基本信息

describe 'student'

3.3、删除表

命令格式:

drop '表名'
#注意:删除表前需要先禁用表-->>disable '表名'

eg:删除student表

# 禁用student表
disable 'student'
# 删除student表
drop 'student'

3.4、表的修改

3.4.1、添加列族

命令格式:

alter ‘表名’, ‘列族名’

eg:为student表添加列族teacherinfo

alter 'student', 'teacherinfo'

3.4.2、更改列族的信息

eg:更改student表的列族baseinfo的存储版本的限制为3(默认情况下,列族只存储一个版本的数据,如果需要存储多个版本的数据,则需要修改列族的属性。修改后可通过desc命令查看)

alter 'student',{name=>'baseinfo',versions=>3}

3.4.3、删除列族

命令格式:

alter ‘表名’, {name => ‘列族名’, method => ‘delete’}

eg:删除student表的teacherinfo列族

alter 'student', {name => 'teacherinfo', method => 'delete'}

2.2.4. hbase的数据层次操作命令

4.1、插入数据

命令格式:

put ‘表名’, ‘行键’,‘列族:列’,‘值’

注意:如果新增数据的行键值、列族名、列名与原有数据完全相同,则相当于更新操作
eg:下面为student插入一些数据的示例

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'

4.2、删除数据

eg:一些删除示例

# 删除指定行(删除student表的rowkey3这一行数据)
delete 'student','rowkey3'

# 删除指定行中指定列的数据(删除student表的rowkey3这一行的baseinfo:name这一列的数据)
delete 'student','rowkey3','baseinfo:name'

4.3、修改(更新)数据

4.4、查询数据

2.2.5. hbase的数据层次操作命令——查询数据

5.1、get查询

eg:get查询的一些使用示例

# 获取指定行中所有列的数据信息
get 'student','rowkey3'

# 获取指定行中指定列族下所有列的数据信息
get 'student','rowkey3','baseinfo'

# 获取指定行中指定列的数据信息
get 'student','rowkey3','baseinfo:name'

5.2、scan查询

5.2.1、查询整表数据

# 查询student表整表数据
scan 'student'

5.2.2、column条件参数,条件查询/指定查询

# 查询指定列簇的数据
scan 'student', {column=>'baseinfo'}
# 注意:因为是单个条件参数,所以花括号可以省略(下同),即命令可以写作:
scan 'student', column=>'baseinfo'

# 查询指定列的数据
scan 'student', {columns=> 'baseinfo:birthday'}

# 查询指定多个列或列族
sana 'student',{columns=> "baseinfo:birthday,schoolinfo"}

# 查询从rowkey2这个rowkey开始,查找下两个行的最新3个版本的name列的数据:
scan 'student', {columns=> 'baseinfo:name',startrow => 'rowkey2',stoprow => 'wrowkey4', limit=>2, versions=>3}

5.2.3、filter条件参数,条件过滤/过滤查询

eg:一些示例

# 行键等于24
scan 'student', filter=>"rowfilter(=,'binary:24')"
# 行键包含24
scan 'student', filter=>"rowfilter(=,'substring:24')"
# 行键的前缀等于wr
scan 'student', filter=>"prefixfilter('wr')" 

# 列族等于24
scan 'student', filter=>"familyfilter(=,'binary:24')"
# 列族包含24
scan 'student', filter=>"familyfilter(=,'substring:24')"

# 列标识符等于“b”的,注意是列标识符不是列族!!!
scan 'student', filter => "qualifierfilter(=,'binary:b')"
# 列标识符含有“b”的,注意是列标识符不是列族!!!
scan 'student', filter => "qualifierfilter(=,'substring:b')"
# 列标识符前缀为birth的,注意是列标识符不是列族!!!
scan 'student', filter=>"columnprefixfilter('birth')"

# 时间戳?范围还是...?这个过滤器暂时不了解
timestampsfilter(参数1,参数2)

# 列值等于24的所有数据
scan 'student', filter=>"valuefilter(=,'binary:24')"
# 列值包含yale的所有数据
scan 'student', filter=>"valuefilter(=,'substring:yale')"

# 针对单个列的值进行过滤,这个过滤器暂时不了解
singlecolumnvaluefilter

# 限制返回的行数,这个过滤器暂时不了解
pagefilter

思考:filter的这些过滤器,如valuefilter(=,‘binary:24’),valuefilter(=,‘substring:yale’),columnprefixfilter(‘birth’),是不是长得像函数调用?

##filter中支持多个过滤条件通过括号、and和or进行组合

eg

# 列名中的前缀为birth且列值中包含1998的数据
scan 'student', filter=>"columnprefixfilter('birth') and valuefilter valuefilter(=,'substring:1998')"
#上面这条命令是不是错了?应该改成下面这样才对?
scan 'student', filter=>"columnprefixfilter('birth') and valuefilter(=,'substring:1998')"

5.2.4、多条件参数的scan查询

# 完整点的多条件参数的scan查询示例
scan 'student', {columns=> 'baseinfo:name',startrow => 'rowkey2',stoprow => 'wrowkey4', limit=>2, versions=>3, filter=>"columnprefixfilter('birth') and valuefilter(=,'substring:1998')"}
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com