HBase–常用Shell操作篇

Stella981
• 阅读 593

HBase为用户提供了一个Shell终端进行交互操作,通过“help get”命令可以获得帮助信息。

【查询相关】
1. 进入hbase shell console
    $HBASE_HOME/bin/hbase shell

2. 查看有哪些表
    list

3. 查看全表数据 
    scan 'tablename'
    查看LIMIT数据
    scan 'tablename',{LIMIT=>10}

4. 查看表描述
    describe 'table' 

5. 查看状态
    hbase(main):004:0> status
    30 servers, 0 dead, 242.7000 average load

6. 获得单行值
    get 'tablename' ,'rowkey'(注意有个逗号)
    获取单行某个列簇的值:
    get 'tablename','rowkey','family'
    获取单行某个列簇某一列的值:
    get 'tablename','rowkey','family:column'  
    通过timestamp获取两个版本的数据:
    get 'tablename' ,'rowkey',{COLUMN=>'family:column',TIMESTAMP=>1321586238965}
    通过rowKey的前缀查询单条记录:
    scan 'YK.VVCOUNT_VID_LIST',{FILTER=>"PrefixFilter('-1001808375')"}
    结果:-1001808375_199894794  column=v:vids, timestamp=1457892147304, value=199503532,199503519
7. 查看表的总记录数
    count 'tablename'

8. 判断表是否disable
    is_disabled 'tablename'

9. 判断表是否enable
    is_enabled 'tablename'

10. 判断表是否存在
    exists 'tablename'

11. 获取当前count

【添加/创建】
1. 创建表
(1) 最简单
create  'TD.VVCOUNT_PLAYLIST_VV', {NAME => 'v'}

(2) 数据7天过期
create 'TD.VVCOUNT_DAY_PLAYLIST_VV', {NAME => 'v', BLOOMFILTER => 'ROWCOL', COMPRESSION => 'SNAPPY', TTL => '604800', BLOCKSIZE => '32768', METADATA => {'ENCODE_ON_DISK' => 'true'}}
精简版:
create 'YK.VVCOUNT_VIDEO_REAL_VV', {NAME => 'v', TTL => '604800'}

(3) 包含多个列族
create 'user','v','f'

2. 插入数据
put 'testtable' , 'myrow-1' , 'colfaml:q1' , 'value-1'
put 'testtable' , 'myrow-2' , 'colfaml:q2' , 'value-2'
put 'testtable' , 'myrow-2' , 'colfaml:q3' , 'value-3'
可以看到有两个行键myrow-1和myrow-2,所以有两行。colfaml为列簇名称,q1、q2、q3为列名称

【修改】
1. 更新一条记录
    put 'member','scutshuxue','info:age' ,'99'

【删除】
1. drop 表
    disable 'tablename'
    drop  'tablename'

2. 清空整张表
    truncate  'tablename'

3. 删除整行
    deleteall 'tablename','rowkey'

4. 删除一个列簇
    先将表disable(如果表中之前有数据的话,会把数据清空    
    disbale 'tablename'
    is_enabled  'tablename'
    alter  'tablename' ,{NAME=>'m_id',METHOD=>'delete'}
    enable 'tablename'

5. 删除某行中的某列
    delete 'testtable' , 'myrow-2' , 'colfaml:q2'

【管理相关】

1. Region管理

(1) 移动Region

# 语法:move 'encodeRegionName', 'ServerName'
# encodeRegionName指的regioName后面的编码,ServerName指的是master-status的Region Servers列表
# 示例
hbase(main)>move '4343995a58be8e5bbc739af1e91cd72d', 'db-41.xxx.xxx.org,60020,1390274516739'

(2) 开启/关闭Region

# 语法:balance_switch true|false
hbase(main)> balance_switch

(3) 手动split

# 语法:split 'regionName', 'splitKey'

(4) 手动触发major compaction

#语法:
#Compact all regions in a table:
#hbase> major_compact 't1'
#Compact an entire region:
#hbase> major_compact 'r1'
#Compact a single column family within a region:
#hbase> major_compact 'r1', 'c1'
#Compact a single column family within a table:
#hbase> major_compact 't1', 'c1'

2. 权限管理

(1) 查看权限

# 语法:user_permission


# 例如,查看表t1的权限列表
hbase(main)> user_permission 't1'

(2) 分配权限

# 语法 : grant

参数后面用逗号分隔
# 权限用五个字母表示: "RWXCA".
# READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')
# 例如,给用户‘test'分配对表t1有读写的权限,
hbase(main)> grant 'test','RW','t1'

(3) 回收权限

# 与分配权限类似,语法:revoke


# 例如,收回test用户在表t1上的权限
hbase(main)> revoke 'test','t1'

更多精彩内容,请访问:圈里圈外

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
HBase启动失败
如果在hbase的shell中输入了status报错,hbase(main):001:0statusERROR:org.apache.hadoop.hbase.ipc.ServerNotRunningYetException:Serverisnotrunningyetatorg.apache.ha
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这