博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HBase常用的Shell命令详解
阅读量:3951 次
发布时间:2019-05-24

本文共 6682 字,大约阅读时间需要 22 分钟。

HBase Shell常用命令和基本操作

文章目录

前言

如果忘记了完整的命令,从左输入命令部分内容,然后点击tab键会提示完整的命令

如输入cr 然后点击tab 就会有以下提示

hbase(main):001:0> createcreate			   create_namespace

注意,输入的表名,行名,列族名,列名和值等必须都要带引号,否则会认为是一个命令。

注意,每个命令之后不需要分号 ; 结束。

基本操作

1. 进入HBase命令操作行

# hbase shell

2. HBase帮助命令:

hbase(main):002:0> help 'create'

3. 查询服务器状态

hbase(main):003:0> status1 active master,0 backup masters, 3 servers,0 dead,2.0000 average load

4. 查询版本号

hbase(main):004:0> version2.0.2.3.1.4.0-315, r, Fri Aug 23 05:18:48 UTC 2019

5. 查看元数据分区信息

hbase(main):042:0> scan 'hbase:meta'

6. 查看hbase中的表,hbase很重要

hbase(main):043:0> list_namespace_tables 'hbase'

DDL 操作

数据定义语言(Data Defination Language,DDL)操作主要操作表和库,查看、修改、删除表等操作。

1. 创建一个命名空间

命名空间相当于数据库

hbase(main):005:0>create_namespace 'namespace1'

2. 列出所有的命名空间

hbase(main):006:0>list_namespace

3. 删除命名空间

hbase(main):007:0>drop_namespace 'namespace1'

4. 创建一个表

创建表table1,列族为column_famaly1,column_famaly2

创建表必须有至少一个列族,多个列族用逗号分开。不指定命名空间,表创建在默认命名空间

hbase(main):008:0> create 'table1','column_famaly1','column_famaly2'

指定命名空间为namespace1 ,格式为create '命名空间:表名','列族名','列族名','列族名...'

hbase(main):009:0> create 'namespace1:table1','column_famaly1','column_famaly2'

创建表时指定列族可以保存的版本,如版本号为3,则可以保存3个版本,不指定默认为1

create '表名',{NAME=>'列族名1',VERSIONS=>给定一个版本号},{NAME=>'列族名2',VERSIONS=>给定的版本号}

5. 列出所有表

hbase(main):010:0> list

6. 列出指定命名空间下所有表

hbase(main):011:0> list_namespace_tables 'namespace1'

7. 查看表的描述信息

desc和decribe都可以

可查看各个列族信息和版本

hbase(main):012:0> describe 'table1'

带命名空间的表

hbase(main):013:0> describe 'namespace1:table1'

描述信息解释

  NAME:表示列族名。  BLOOMFILTER:表示为列族级别的类型(读者只作了解即可)。  VERIONS:表示版本数。  N_MEMORY:设置是否存入内存。  KEEP_DELETED_CELLS:设置被删除的数据,在基于时间的历史数据查询中是否依然可见。  DATA_BLOCK_ENCODING:表示数据块的算法(读者只作了解即可)。  TTL:表示版本存活的时间。  COMPRESSION:表示设置压缩算法。  MIN_VERSIONS:表示最小版本数。  BLOCKCACHE:表示是否设置读缓存。  REPLICATION:表示设置备份。

8. 删除一个列族

hbase(main):014:0> alter 'table1',{NAME=>'column_famaly1',METHOD=>'delete'}

9. 添加一个列族

VERSIONS为可以保存的版本,5表示可以保存5个版本

若该列族已存在,也可以直接更新列族的版本

hbase(main):015:0> alter 'table1',{NAME=>'column_famaly1',VERSIONS => 5}

10. 删除表

需要先把表设置为不可用 disable。

hbase(main):016:0> disable'table1'

然后才能删除。

hbase(main):017:0> drop 'table1'

11. 查询表是否存在

hbase(main):018:0> exists 'table1'

12. 查看表是否可用

hbase(main):019:0> is_enabled 'table1'

DML 操作

DML(Data Manipulation Language,数据操作语言)操作主要操作表中的数据,对表的数据进行添加、修改、删除和查询。

0. 创建表做测试

在默认命名空间下,创建一个student表,有列族infoscores(个人信息和科目分数)

info可以保存的版本为3,scores版本为1

hbase(main):020:0> create 'student',{NAME=>'info',VERSIONS=>3},{NAME=>'scores',VERSIONS=>1}

1. 插入数据

插入数据的时候需要指定命名空间:表名行名列族:列名命名空间和列名可省

put '[命名空间:]表名','行名','列族名[:列名]','值'

向student表中增加以下数据

hbase(main):021:0> put 'student','rowkey1','info:name','xhx'hbase(main):022:0> put 'student','rowkey1','info:age','20'hbase(main):023:0> put 'student','rowkey1','info:sex','boy'hbase(main):024:0> put 'student','rowkey2','scores:math','90'

如果不想指定列名就直接写列族:,冒号后面不加列名

hbase(main):025:0> put 'student','rowkey1','info:','nocol'

2. 全表扫描获取数据,可指定开始结束rowkey

获取 student表的所有数据。如果有多个版本数据会显示时间戳最近的一条数据。

hbase(main):026:0> scan 'student'ROW                                COLUMN+CELL      rowkey1                            column=info:, timestamp=1619157750674, value=nocolrowkey1                            column=info:age, timestamp=1619157768685, value=20 rowkey1                            column=info:name, timestamp=1619158508679, value=xhx3 rowkey1                            column=info:sex, timestamp=1619157787678, value=boyrowkey2                            column=scores:math, timestamp=1619157787700, value=90

扫描查看数据,指定查看

hbase(main):040:0> scan 'student',{LIMIT=>2}ROW                                COLUMN+CELL      rowkey1                            column=info:, timestamp=1619157750674, value=nocolrowkey1                            column=info:age, timestamp=1619157768685, value=20

扫描查看数据,指定开始和结束的rowkey,左闭右开(rowkey1 <= rowkey < rowkey2)

hbase(main):041:0> scan 'student',{STARTROW => 'rowkey1', STOPROW  => 'rowkey2'}ROW                                COLUMN+CELL      rowkey1                            column=info:, timestamp=1619157750674, value=nocolrowkey1                            column=info:age, timestamp=1619157768685, value=20 rowkey1                            column=info:name, timestamp=1619158508679, value=xhx3 rowkey1                            column=info:sex, timestamp=1619157787678, value=boy

3. 获取指定的数据

获取 student表的 rowkey1行的所有数据。如果有多版本只显示时间戳最新一条的数据。

hbase(main):027:0> get 'student','rowkey1'COLUMN                                CELL      info:                                 timestamp=1619157750674, value=nocolinfo:age                              timestamp=1619157768685, value=20 info:name                             timestamp=1619158508679, value=xhx3 info:sex                              timestamp=1619157787678, value=boy

获取 student表的 rowkey1行的info列族下所有数据。如果有多版本只显示时间戳最新一条的数据

hbase(main):028:0> get 'student','rowkey1','info'COLUMN                                CELL      info:                                 timestamp=1619157750674, value=nocolinfo:age                              timestamp=1619157768685, value=20 info:name                             timestamp=1619158508679, value=xhx3 info:sex                              timestamp=1619157787678, value=boy

注意,获取列族 infoinfo:的结果是不同的。

hbase(main):029:0> get 'student','rowkey1','info:'COLUMN                                CELL      info:                                 timestamp=1619157750674, value=nocol

获取student表的 rowkey1行的info列族下列名为name的数据。如果有多版本只显示时间戳最新一条的数据

hbase(main):030:0> get 'student','rowkey1','info:name'COLUMN                                CELL      info:name                             timestamp=1619158508679, value=xhx3

4. 更新数据

更新数据,增加多版本数据,列族info可以保存的版本为3条数据

更新表studentrowkey1 列族infoname的数据

hbase(main):031:0> put 'student','rowkey1','info:name','xhx1'hbase(main):032:0> put 'student','rowkey1','info:name','xhx2'hbase(main):033:0> put 'student','rowkey1','info:name','xhx3'

5. 如果有多版本获取多条数据

hbase(main):034:0> get 'student','rowkey1',{COLUMN=>'info:name',VERSIONS=>3}info:name                             timestamp=1619158508679, value=xhx3info:name                             timestamp=1619158507550, value=xhx2info:name                             timestamp=1619158505321, value=xhx1

4. 通过指定时间戳获取某个版本的数据

hbase(main):035:0> get 'student','rowkey1',{COLUMN=>'info:name',TIMESTAMP=>1619158507550}info:name                             timestamp=1619158507550, value=xhx2

6. 统计表中的行数

如student表中有rowkey1和rowkey2两行, 则返回2 row(s)

hbase(main):036:0> count 'student'

7. 删除一列

删除列sex

hbase(main):037:0> delete 'student','rowkey1','info:sex'

8. 删除行的所有单元格

删除student表中rowkey1行的所有列

也就是相当于删除了rowkey1行的所有数据

hbase(main):038:0> deleteall 'student','rowkey1'

9. 清空整张表

hbase(main):039:0> truncate 'student'

转载地址:http://mduzi.baihongyu.com/

你可能感兴趣的文章
超全的 Linux 机器的渗透测试命令备忘表,共16表128条命令
查看>>
代码传奇 | 明明可以靠颜值 却用代码把人类送上了月球的女人——Margaret Hamilton
查看>>
教你用Java来玩答题(百万英雄/冲刺大会等)
查看>>
用Python做跳一跳外挂太浪费了,这种技能让你目瞪口呆
查看>>
如何在Python中快速进行语料库搜索:近似最近邻算法
查看>>
比特币这么火热,看看这篇比特币初学者指南
查看>>
快收藏! 30 分钟包你学会 AWK
查看>>
各平台的推荐算法,太贴切了!
查看>>
一张图学会Python3
查看>>
500款各领域机器学习数据集,总有一个是你要找的
查看>>
2017年终奖调查出炉 程序员年终奖多少你绝对猜不到
查看>>
使用 Charles 抓取 app 数据包
查看>>
未来,改变世界的将是这些......
查看>>
2018年大数据趋势
查看>>
大数据揭示年度学霸画像:大家都在学什么?
查看>>
各领域机器学习数据集汇总(附下载地址)
查看>>
如何运用Python建一个聊天机器人?
查看>>
人民日报:让中国大数据跑起来!
查看>>
百度地图大数据告诉你一线城市真相
查看>>
大数据 勾勒中国人“的亲情地图”!
查看>>