专栏首页Jed的技术阶梯HBase Shell常用Shell命令

HBase Shell常用Shell命令

1. 进入与退出hbase shell命令行窗口

[root@repo ~]# hbase shell
hbase(main):001:0>

hbase(main):001:0> exit
[root@repo ~]#

2. help

(1) 查看hbase中有哪些命令

(2) 查看某一组命令的下的所有命令的简介和简单示范

# 例如
help 'ddl'

(3) 查看某个命令的详细使用

# 例如
help 'create'

3. general组中命令

--(1) 查看集群状态
hbase(main):078:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 3.0000 average load

--(2) 查看集群版本
hbase(main):079:0> version
1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017

--(3) 当前登录用户角色信息
hbase(main):080:0> whoami
root (auth:SIMPLE)
    groups: root

--(4) 查看对某张表进行操作的基本命令
hbase(main):081:0> table_help

4.ddl组中命令

(1) 查看数据库中有哪些表

hbase(main):005:0> list
TABLE
person

(2) 查看表属性信息

hbase(main):007:0> describe 'person'
# 或者
hbase(main):007:0> desc 'person'

Table person is ENABLED
person
COLUMN FAMILIES DESCRIPTION
{
NAME => 'age', 
BLOOMFILTER => 'ROW', 
VERSIONS => '1', 
IN_MEMORY => 'false', 
KEEP_DELETED_CELLS => 'FALSE', 
DATA_BLOCK_ENCODING => 'NONE', 
TTL => 'FOREVER', 
COMPRESSION => 'NONE', 
MIN_VERSIONS => '0', 
BLOCKCACHE => 'true', 
BLOCKSIZE => '65536', 
REPLICATION_SCOPE => '0'
}                                                     

# 其中的属性的意义:
NAME:列族名
VERSIONS:最大版本号
MIN_VERSIONS:最小版本号
TTL(Time To Live):存活时间
IN_MEMORY:是否开启缓存,默认false,应该开启,否则与BLOCKCACHE冲突
BLOCKCACHE:读缓存是否开启,默认开启,64M

(3) 建表

# create '表名', '列族1', '列族2'...
hbase(main):002:0> create 'person', 'name', 'age'
# 等价于
hbase(main):002:0> create 'person',{NAME=>'name' },{NAME=>'age'}
# 建表时可以指定表属性信息
hbase(main):005:0> create 'user_info',{NAME=>'base_info',VERSIONS=>3 },{NAME=>'extra_info',IN_MEMORY=>'true'} 

(4) alter 修改表

--(1) 增加列族
alter 'table_name', 'add_family'
# 或者
alter 'table_name', {NAME => 'add_family'}
# 当然,新增加的列可以设置属性,比如
alter 'table_name', {NAME => 'add_family', VERSIONS => 3}

--(2) 删除列族
alter 'table_name', {NAME => 'delete_family', METHOD => 'delete'}
或者
alter 'table_name', 'delete' => 'delete_family'

--(3) 添加列族f1同时删除列族f2
alter 'user', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}

--(4) 修改列族
# 将user表的f1列族版本号改为5
alter 'user', NAME => 'f1', VERSIONS => 5

(5) 判断表是否存在

exists 'table_name'

(6) 禁用表与启用表

--(1) 禁用表
disable 'table_name'
--(2) 查看表是否禁用
is_disabled 'table_name'
--(3) 启用表
enable 'table_name'
--(4) 查看表是否启用
is enabled 'table_name'

(7) 删除表

# hbase的某些版本,在删除表前,需要先禁用表
disable 'table_name'
drop 'table_name'

5. dml组中命令

(1) 插入数据

--(1) 
# put '表名','rowkey','列族名:列名','值'
put 'person','0001','name:firstname', 'Jed'
--(2) 可以指定时间戳,否则默认为系统当前时间
put 'person','0002','info:age',20,1482077777778

(2) 查询某行

--(1) 
get 'person', '0001'
--(2) 查询某行,指定列名
get 'person', '0001', 'name:firstname'
--(3) 查询某行,添加其他限制条件
# 查询person表中,rowkey为'0001'的这一行,只显示name:firstname这一列,并且只显示最新的3个版本
get 'person', '0001', {COLUMNS => 'name:firstname', VERSIONS => 3}
# 查看指定列的内容,并限定显示最新的3个版本和时间范围 
get 'person', '0001', {COLUMN => 'name:first', VERSIONS => 3, TIMERANGE => [1392368783980, 1392380169184]}
# 查询person表中,rowkey为'rk0001',且某列的内容为'中国'的记录
scan'person', 'rk0001', {FILTER => "ValueFilter(=, 'binary:中国')"}

(3) 全表扫描

--(1) 扫描全表
scan 'person'
--(2) 扫描时指定列族
scan 'person', {COLUMNS => 'name'}
--(3) 扫描时指定列族,并限定显示最新的5个版本的内容
scan 'person', {COLUMNS => 'name', VERSIONS => 5}
--(4) 设置开启Raw模式,开启Raw模式会把那些已添加删除标记但是未实际删除的数据也显示出来
scan 'person', {COLUMNS => 'name', RAW => true}
--(5) 列的过滤
# 查询user表中列族为info和data的信息
scan 'user', {COLUMNS => ['info', 'data']}
# 查询user表中列族为info,列名为name、列族为data,列名为pic的信息
scan 'user', {COLUMNS => ['info:name', 'data:pic']}
# 查询user表中列族为info,列名为name的信息,并且版本最新的5个
scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}
# 查询user表中列族为info和data且列名含有a字符的信息
scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}
# 查询user表中列族为info,rk范围是[rk0001, rk0003)的数据
scan 'people', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}
# 查询user表中row key以rk字符开头的
scan 'user',{FILTER=>"PrefixFilter('rk')"}
# 查询user表中指定时间范围的数据
scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}

scan的用法很多,参数,过滤条件可以很多,各种组合, 在此不列举过多的例子,参考 help 'scan'

(4) 删除数据

delete 'table_name', 'rowkey', 'family:column'

(5) 清空表

truncate 'table_name'

6. 其他

--(1) 查看命名空间
hbase(main):015:0> list_namespace
NAMESPACE

default # 用户创建的表放在这里
hbase # 系统表空间

--(2) 把表中数据强制写到磁盘
flush 'table_name'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kafka 中使用 Avro 序列化框架(二):使用 Twitter 的 Bijection 类库实现 avro 的序列化与反序列化

    使用传统的 avro API 自定义序列化类和反序列化类比较麻烦,需要根据 schema 生成实体类,需要调用 avro 的 API 实现 对象到 byte[]...

    CoderJed
  • Hbase伪分布式集群搭建

    CoderJed
  • Redis 基本数据结构三:哈希

    几乎所有的编程语言都提供了哈希(hash)类型,例如 Java 中的 Map,python 中的字典,在Redis中,哈希类型是指键的值本身又是一个键值对结构,...

    CoderJed
  • 谈谈基于SQL Server 的Exception Handling[中篇]

    三、TRY CATCH & Return 在上面一节中,我通过RAISERROR重写了创建User的Stored procedure,实际上上面的Stored ...

    蒋金楠
  • Carthage的安装和使用

    Scott_Mr
  • Cocoa包管理器之Carthage详解及CocoaPods中心化+Carthage的二进制化

    上篇博客详细的聊了CocoaPods的相关内容,今天我们就来介绍另一个Cocoa的包管理器Carthage。在上家公司用Swift开发工程时,用的就是Carth...

    lizelu
  • 看zwell怎么带我解决方程式poc的bug

    lonelyvaf
  • Grafana安装与连接Zabbix构建炫酷资源监控Dashboard

    “ Grafana在的使用场景与公司当前的数据场景非常契合。所以选型了Grafana进行数据的展现与一些告警的实现。利用Grafana的能力融合硬件监控+业务监...

    CainGao
  • TensorFlow的安装与初步了解

    今天终于有时间一探滕三福了,TensorFlow(腾三福)是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tenso...

    昱良
  • 数据分析案例:肯德基和麦当劳的相爱相杀

    现实生活中,不难发现,不论是在喧闹繁华的商业区还是在人们来往频繁的住宅区,麦当劳与肯德基两个冤家对头总是形影不离,有麦当劳的地方就有肯德基,有肯德基的地方也少不...

    沉默的白面书生

扫码关注云+社区

领取腾讯云代金券