Hbase 基本命令总结

本文详细介绍HBase的基本操作命令,包括表的创建、数据的增删改查等,并提供了丰富的示例帮助理解。此外还介绍了如何使用过滤器进行复杂的数据筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

访问hbase,以及操作hbase,命令不用使用分号
hbase shell 进入hbase

list 查看表
hbase shell -d

hbase(main):024:0> scan '.META.'

=============小例子===================================================

1. 创建一个表member
hbase(main):025:0> create 'member','m_id','address','info'

2.list #查看所有表

3.查看表描述
hbase(main):028:0> describe 'member'

4. scan浏览表中数据
scan 'member'

5.
删除一个列族m_id:先将表disable(如果表中之前有数据的话,会把数据清空)
hbase(main):030:0> disable 'member'

hbase(main):033:0> is_enabled 'member'

hbase(main):034:0> alter 'member',{NAME=>'m_id',METHOD=>'delete'}

最后enable,否则不能进行其他操作
hbase(main):038:0> enable 'member'


6.插入几条记录

put'member','scutshuxue','info:age','24'

put'member','scutshuxue','info:birthday','1987-06-17'

put'member','scutshuxue','info:company','alibaba'

put'member','scutshuxue','address:contry','china' 

put'member','scutshuxue','address:province','zhejiang' 

put'member','scutshuxue','address:city','hangzhou' 

scan 'member'


7.获取数据
获取一个id的所有数据
hbase(main):001:0>get 'member','scutshuxue'

获取一个id,一个列族的所有数据
hbase(main):002:0>get 'member','scutshuxue','info'

获取一个id,一个列族中一个列的所有数据
hbase(main):002:0>get 'member','scutshuxue','info:age' 

通过timestamp来获取两个版本的数据
hbase(main):010:0>get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}


8.  更新一条记录

将scutshuxue的年龄改成99
hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99'

10.
查询表中有多少行:
hbase(main):019:0>count 'member'  

11.
删除整行
hbase(main):001:0>deleteall 'member','xiaofeng'

12.
删除id为xiaofeng的值的‘info:age’字段
hbase(main):016:0>delete 'member','temp','info:age'

13.
给‘xiaofeng’这个id增加'info:go'字段,并使用counter实现递增
hbase(main):041:0> incr 'member','xiaofeng','info:go'
连续执行incr以上,COUNTER VALUE 的值会递增,通过get_counter


获取当前count的值
hbase(main):069:0>get_counter 'member','xiaofeng','info:age' 

hbase(main):058:0>get 'member','xiaofeng','info:go'  

获取当前count的值
hbase(main):069:0>get_counter 'member','xiaofeng','info:age' 


=============================相关删除=========================

1.
删除一个列族:先将表disable(如果表中之前有数据的话,会把数据清空)
hbase(main):030:0> disable 'member'

hbase(main):033:0> is_enabled 'member'

hbase(main):034:0> alter 'member',{NAME=>'m_id',METHOD=>'delete'}

最后enable,否则不能进行其他操作
hbase(main):038:0> enable 'member'

2.
删除整行
hbase(main):001:0>deleteall 'scores','xiaofeng'

3.
将整张表清空:
hbase(main):035:0>truncate 'scores'
hbase是先将掉disable掉,然后drop掉后重建表来实现truncate的功能

4.
drop一个表(先disable,在drop)
hbase(main):029:0>disable 'scores'
hbase(main):029:0>drop 'scores'
=====================基本操作===========================================

1.
查询表是否存在
hbase(main):021:0>exists 'scores'

2.
判断表是否enable
hbase(main):034:0>is_enabled 'scores'
                                                                                       
3.
判断表是否disable
hbase(main):032:0>is_disabled 'scores'

4.
列出所有的表
hbase(main):028:0>list

5.
创建表member
hbase(main):025:0> create 'member','m_id','address','info'

6.
查看表描述
hbase(main):028:0> describe 'member'

=================查询操作================================================
1.scan '表名' #查看所有数据

2.get是根据主键查看一列
get '表名','主键'[,'列簇名'][,'列簇名:列名']

=============================================================
过滤查询表的内容
1.FirstKeyOnlyFilter() 得到每一行的列族info的第一个列
hbase(main):002:0> scan 'student',{COLUMNS=>'info',FILTER=>"(FirstKeyOnlyFilter())"}

2.查看列簇是info,LIMIT是显示的行数,STARTROW是开始行对应的是主键
hbase(main):008:0> scan 'student',{COLUMNS=>['info'],LIMIT=>4,STARTROW=>'200977100710'}

3.查看列簇是info,name
hbase(main):007:0> scan 'student',{COLUMNS=>['info','name'],LIMIT=>4,STARTROW=>'200977100710'}

 

参考:

http://blog.youkuaiyun.com/longshenlmj/article/details/48317567

<think>好的,我现在需要回答用户关于HBase Shell中scan命令的用法的问题。首先,我得回想一下HBase的基础知识,特别是scan命令的相关内容。用户已经提供了几个引用,我需要结合这些资料来组织答案。 首先,用户的问题是关于scan命令的使用说明和示例。根据引用[2],里面提到了scan命令基本格式,比如echo命令将结果保存到文件,还有LIMIT参数的使用。这可能是一个示例,说明如何限制返回的行数。此外,用户提供的引用[3]是关于创建表的命令,虽然不直接相关,但可能需要提到表结构对scan的影响,比如列族的设置。 接下来,我应该先介绍scan命令基本作用,即用于扫描表中的数据。然后,详细说明它的语法结构,包括可选参数。比如,FILTER、LIMIT、STARTROW、STOPROW这些常用参数都需要解释。同时,要给出具体的示例,这样用户更容易理解。 例如,引用[2]中的示例展示了如何将scan结果保存到文件,使用LIMIT参数限制返回的行数。这可以作为示例之一。此外,可能还需要其他示例,比如使用FILTER来筛选数据,或者指定特定的列族和列。 需要注意的是,用户提供的引用[1]是关于HBase Shell常用命令的,可能包含其他相关命令的信息,但当前问题聚焦在scan上,所以主要参考引用[2]和可能的其他知识。 还需要确保语法正确,比如在示例中使用正确的单引号、参数格式等。例如,FILTER的语法可能比较复杂,需要正确书写。此外,STARTROW和STOPROW的使用可以指定扫描的范围,这对于大数据量的表很重要,可以优化查询性能。 另外,用户可能对如何高效使用scan命令感兴趣,比如通过设置缓存大小(CACHE)来提升扫描速度,或者使用TIMERANGE来获取特定时间戳范围内的数据。这些高级参数也应该包含在说明中。 最后,生成相关问题。根据用户之前的问题模式,可能需要的问题包括scan命令的性能优化、如何结合其他命令使用、或者不同过滤器的使用方法等。 现在需要组织这些内容,按照用户的要求,结构清晰,分点说明,使用中文,并且正确应用引用标注。同时,确保所有行内数学表达式使用$...$,但在这个问题中可能涉及较少数学内容,主要关注命令语法和示例。 总结步骤: 1. 介绍scan命令的作用。 2. 详细说明命令语法及参数。 3. 提供多个使用示例,包括基础和高阶用法。 4. 添加引用标注到相关部分。 5. 生成相关问题。 在写作过程中,需要检查是否有遗漏的参数或常见用法,确保信息准确可靠,并正确引用提供的资料。同时,注意用户提到的系统级指令,如独立公式用$$...$$,但此处可能不涉及,故可以忽略。保持语言简洁明了,帮助用户快速掌握scan命令的用法。</think>### HBase Shell中scan命令使用说明 #### 1. scan命令作用 `scan`命令用于扫描HBase表中的数据,支持按行键范围、列族/列限定符、过滤器等条件检索数据[^2]。 #### 2. 命令基础语法 ``` scan '表名', {参数1 => 值1, 参数2 => 值2, ...} ``` **常用参数说明**: - `LIMIT`:限制返回的行数,例如`LIMIT => 10`[^2]。 - `FILTER`:应用过滤器条件,例如`FILTER => "ValueFilter(=, 'binary:value1')"`。 - `COLUMNS`:指定列族或列,例如`COLUMNS => ['cf1:col1', 'cf2:col2']`。 - `STARTROW`/`STOPROW`:定义行键扫描范围(左闭右开)。 - `TIMERANGE`:按时间戳范围过滤数据。 - `CACHE`:设置每次RPC请求缓存的行数,优化性能。 --- #### 3. 使用示例 **示例1:基础扫描(全表扫描)** ```shell scan 'user_table' ``` 扫描`user_table`所有数据[^2]。 **示例2:限制返回行数** ```shell scan 'user_table', {LIMIT => 5} ``` 仅返回前5行数据。 **示例3:指定列族和列** ```shell scan 'user_table', {COLUMNS => ['info:name', 'info:age']} ``` 仅扫描列族`info`下的`name`和`age`列。 **示例4:按行键范围扫描** ```shell scan 'user_table', {STARTROW => 'row100', STOPROW => 'row200'} ``` 扫描行键在`row100`(包含)到`row200`(不包含)之间的数据。 **示例5:使用过滤器** ```shell scan 'user_table', {FILTER => "SingleColumnValueFilter('info', 'age', >=, 'binary:30')"} ``` 筛选`info:age`列值大于等于30的行。 **示例6:结果导出到文件** ```shell echo "scan 'user_table', {LIMIT => 1}" | hbase shell > output.txt ``` 将扫描结果保存至`output.txt`文件。 --- #### 4. 注意事项 - **性能影响**:全表扫描可能触发大量RegionServer请求,建议通过`STARTROW/STOPROW`缩小范围。 - **过滤器语法**:复杂过滤需使用单引号包裹条件,例如`FILTER => "PrefixFilter('row1') AND ValueFilter(=, 'substring:abc')"`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值