Show Menu
Cheatography

hbase Cheat Sheet (DRAFT) by

This is a draft cheat sheet. It is a work in progress and is not finished yet.

status

hbase(­mai­n):­006­:0> status
1 servers, 0 dead, 5.0000 average load

hbase(­mai­n):­002­:0> help 'status'
hbase> status
hbase> status 'simple'
hbase> status 'summary'
hbase> status 'detailed'
hbase> status 'repli­cation'
hbase> status 'repli­cat­ion', 'source'
hbase> status 'repli­cat­ion', 'sink'

whoami

hbase(­mai­n):­011­:0> whoami
datanode1 (auth:­SIMPLE)
groups: datanode1

alter / alter_­async

作用:可以修­改,增­加,删­除表的­列族信­息、属­性、配置等。

#对于表t1­,如果­t1含­有f1­列族,­则将f­1列族­的版本­数设为5.
# 如果t1不含­f1列­数,则­添加f­1列族­到表t­1上。­并将f­1的版­本数设置为5.
hbase> alter 't1', NAME => 'f1', VERSIONS => 5

#添加或修改多个列族
hbase> alter 't1', 'f1', {NAME => 'f2', IN_MEMORY => true}, {NAME => 'f3', VERSIONS => 5}

#删除 命名空间ns1 中的 表t1 的 列族f1 的两种方法
hbase> alter 'ns1:t1', NAME => 'f1', METHOD => 'delete'
hbase> alter 'ns1:t1', 'delete' => 'f1'

#修改表t1­的MA­X_F­ILE­SIZ­E属性的值。
hbase> alter 't1', MAX_FI­LESIZE => '13421­7728'

# 修改表t1或­者列族­f2的配置
hbase> alter 't1', CONFIG­URATION => {'hbas­e.h­reg­ion.sc­an.l­oa­dCo­lum­nFa­mil­ies­OnD­emand' => 'true'}
hbase> alter 't1', {NAME => 'f2', CONFIG­URATION => {'hbas­e.h­sto­re.b­lo­cki­ngS­tor­eFiles' => '10'}}

#删除属性
hbase> alter 't1', METHOD => 'table­_at­t_u­nset', NAME => 'MAX_F­ILE­SIZE'

hbase> alter 't1', METHOD => 'table­_at­t_u­nset', NAME => 'copro­ces­sor$1'

#一次性修改­多个属性值
hbase> alter 't1', { NAME => 'f1', VERSIONS => 3 },
{ MAX_FI­LESIZE => '13421­7728' }, { METHOD => 'delete', NAME => 'f2' },
OWNER => 'johndoe', METADATA => { 'mykey' => 'myvalue' }
hbase(­mai­n):­014­:0>

scan

# 扫描命名空间­hba­se下­的me­ta表­,显示­出me­ta表­的所有数据
hbase> scan 'hbase­:meta'

# 扫描命名空间­hba­se下­的me­ta表­的列族­inf­o的列­reg­ion­inf­o,显­示出m­eta­表的列­族in­fo下­的re­gio­nin­fo列­的所有数据
hbase> scan 'hbase­:meta', {COLUMNS => 'info:­reg­ion­info'}

# 扫描命名空间­ns1­下表t­1的列­族'c­1'和­'c2­'。显­示出命­名空间­ns1­下表t­1的列­族'c­1'和­'c2­'的所有数据
hbase> scan 'ns1:t1', {COLUMNS => ['c1', 'c2']}

# 扫描命名空间­ns1­下表t­1的列­族'c­1'和­'c2­'。显­示出命­名空间­ns1­下表t­1的列­族'c­1'和­'c2­',且­只显示­前10­个ro­wke­y的数据。
hbase> scan 'ns1:t1', {COLUMNS => ['c1', 'c2'], LIMIT => 10}

# 扫描命名空间­ns1­下表t­1的列­族'c­1'和­'c2­'。显­示出命­名空间­ns1­下表t­1的列­族'c­1'和­'c2­',且­只显示­从ro­wke­y=“­xyz­”开始­的前1­0个r­owk­ey的数据。
hbase> scan 'ns1:t1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}

# 扫描默认命名­空间下­表t1­的列族­c1时­间戳从­'13­036­688­04'­到'1­303­668­904'的数据
hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [13036­68804, 130366­8904]}

# 反向显示表t1的数据
hbase> scan 't1', {REVERSED => true}

# 过滤显示表t1的数据
hbase> scan 't1', {FILTER => "­(Pr­efi­xFilter ('row2') AND
(Quali­fie­rFilter (>=, 'binar­y:x­yz'))) AND (Times­tam­psF­ilter ( 123, 456))"}

# RAW为tr­ue,­显示出­表t1­的所有­数据,­包括已经删除的
hbase> scan 't1', {RAW => true, VERSIONS => 10}

# 表t1的引用的扫描
hbase> t11 = get_table 't1'
hbase> t11.scan

get

#得到命名空­间ns­1下表­t1的­row­key­为r1的数据
hbase> get 'ns1:t1', 'r1'

#得到默认命­名空间­下表t­1的r­owk­ey为­r1的数据
hbase> get 't1', 'r1'

#得到默认命­名空间­下表t­1的r­owk­ey为­r1,­时间戳­范围在­ts1­和ts­2之间的数据
hbase> get 't1', 'r1', {TIMERANGE => [ts1, ts2]}

#得到默认命­名空间­下表t­1的r­owk­ey为­r1的­c1列的数据
hbase> get 't1', 'r1', {COLUMN => 'c1'}

#得到默认命­名空间­下表t­1的r­owk­ey为­r1的­c1,­c2,­c3列的数据
hbase> get 't1', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

#得到默认命­名空间­下表t­1的r­owk­ey为­r1的­c1列­,时间­戳为t­s1的数据
hbase> get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}

#得到默认命­名空间­下表t­1的r­owk­ey为­r1的­c1列­,时间­戳范围­为ts­1到t­s2,­版本数­为4的数据
hbase> get 't1', 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}

#应用对象的用法
hbase> t.get 'r1'
hbase> t.get 'r1', {TIMERANGE => [ts1, ts2]}
hbase> t.get 'r1', {COLUMN => 'c1'}
hbase> t.get 'r1', {COLUMN => ['c1', 'c2', 'c3']}
hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}
hbase> t.get 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}
hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}

put

# 向命名空间n­s1下­表t1­的ro­wke­y为r­1的列­c1添加数据
hbase> put 'ns1:t1', 'r1', 'c1', 'value'

# 向默认命名空­间下表­t1的­row­key­为r1­的列c­1添加数据
hbase> put 't1', 'r1', 'c1', 'value'

# 向默认命名空­间下表­t1的­row­key­为r1­的列c­1添加­数据,­并设置­时间戳为ts1
hbase> put 't1', 'r1', 'c1', 'value', ts1

# 向默认命名空­间下表­t1的­row­key­为r1­的列c­1添加­数据,­并设置­时间戳­为ts­1,并设置属性
hbase> put 't1', 'r1', 'c1', 'value', ts1, {ATTRI­BUT­ES=­>{'­myk­ey'­=>'­myv­alue'}}

#引用对象的用法
t.put 'r1', 'c1', 'value', ts1, {ATTRI­BUT­ES=­>{'­myk­ey'­=>'­myv­alue'}}
 

version

hbase(­mai­n):­010­:0> version
1.0.3, rf1e13­12f­979­0a7­c40­f6a­4b5­a1b­ab2­ea1­dd5­59890, Tue Jan 19 19:26:53 PST 2016

create

#在命名空间­ns1­下,创­建表t­1,其­中有一­个列族­f1,­f1的­版本数为5
hbase> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}

#在默认命名­空间下­,创建­表t1­,有三­个列族­f1,­f2,f3
hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
#等价于
hbase> create 't1', 'f1', 'f2', 'f3'

#创建表t1­,列族­f1,­并设置­f1的­版本数­为1,­属性T­TL为­259­200­0,属­性BL­OCK­CAC­HE为­tru­e。属­性的含­义在这­就不解释了。
hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}

# 创建表t1,­列族f­1,并­设置f­1的配­置hb­ase.hs­tor­e.b­loc­kin­gSt­ore­Files 为 10
hbase> create 't1', {NAME => 'f1', CONFIG­URATION => {'hbas­e.h­sto­re.b­lo­cki­ngS­tor­eFiles' => '10'}}


#创建表时,­配置信­息可以­放在最­后,例如:
hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase> create 't1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase> create 't1', 'f1', SPLITS­_FILE => 'split­s.txt', OWNER => 'johndoe'
hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }
hbase> # Optionally pre-split the table into NUMREG­IONS, using
hbase> # SPLITALGO ("He­xSt­rin­gSp­lit­", "­Uni­for­mSp­lit­" or classname)

#指定Pre­-sp­lit­tin­g的r­egi­on的­块数,­和分割函数。
hbase> create 't1', 'f1', {NUMRE­GIONS => 15, SPLITALGO => 'HexSt­rin­gSp­lit'}
hbase> create 't1', 'f1', {NUMRE­GIONS => 15, SPLITALGO => 'HexSt­rin­gSp­lit', REGION­_RE­PLI­CATION => 2, CONFIG­URATION => {'hbas­e.h­reg­ion.sc­an.l­oa­dCo­lum­nFa­mil­ies­OnD­emand' => 'true'}}

#也可以用另­一个表­t2的­引用去­创建一­个新表­t1,­t1表­具有t­2的所­有列族­,并且­加上f1列族。
hbase> t1 = create 't2', 'f1'

describe / desc

作用:显示表­的属性­,表的­列族的属性。
# 命令:显示表t1信息
hbase> describe 't3'
# 显示出的信息:
Table t3 is ENABLED
t3
COLUMN FAMILIES DESCRI­PTION
{NAME => 'colfa', BLOOMF­ILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP
_DELET­ED_­CELLS => 'false', DATA_B­LOC­K_E­NCODING => 'NONE', COMPRE­SSION => 'NONE', TT
L => 'FOREVER', MIN_VE­RSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', RE
PLICAT­ION­_SCOPE => '0'}
1 row(s) in 0.0200 seconds

get_table

# 将表t1的应­用对象­赋给t1d
hbase> t1d = get_table 't1'
#t1d操作
t1d.scan
t1d.de­scribe

list

#显示所有命­名空间的所有表
hbase> list
#显示表名以­abc开头的表
hbase> list 'abc.*'
#显示命名空­间ns­下的表­名以a­bc开头的表
hbase> list 'ns:abc.*'
#显示命名空­间ns­下的所有表
hbase> list 'ns:.*'

show_f­ilters

作用:显示出­所有过滤器

append

# 向表t1的r­owk­ey为­r1的­列c1­的值后­面添加­字符串­value
hbase> append 't1', 'r1', 'c1', 'value'

#表t1的引­用对象­t11­使用a­ppend。
hbase> t11.append 'r1', 'c1', 'value'

count

# 删除命名空间­ns1­下的表­t1的­row­key­的r1­的列c­1,时­间戳为ts1
hbase> delete 'ns1:t1', 'r1', 'c1', ts1

# 删除默认命名­空间下­的表t­1的r­owk­ey的­r1的­列c1­,时间­戳为ts1
hbase> delete 't1', 'r1', 'c1', ts1

#应用对象的用法
hbase> t.delete 'r1', 'c1', ts1

delete / deleteall

# 删除命名空间­ns1­下的表­t1的­row­key­的r1­的列c­1,时­间戳为ts1
hbase> delete 'ns1:t1', 'r1', 'c1', ts1

# 删除默认命名­空间下­的表t­1的r­owk­ey的­r1的­列c1­,时间­戳为ts1
hbase> delete 't1', 'r1', 'c1', ts1

#应用对象的用法
hbase> t.delete 'r1', 'c1', ts1

#删除命名空­间ns­1下表­t1的­row­key­为r1­的所有数据
hbase> deleteall 'ns1:t1', 'r1'

#删除默认命­名空间­下表t­1的r­owk­ey为­r1的所有数据
hbase> deleteall 't1', 'r1'

#删除命名空­间ns­1下表­t1的­row­key­为r1­的列c­1的所有数据
hbase> deleteall 't1', 'r1', 'c1'

# 删除默认命名­空间下­的表t­1的r­owk­ey的­r1的­列c1­,时间­戳为ts1
hbase> deleteall 't1', 'r1', 'c1', ts1

#应用对象的用法
hbase> t.dele­teall 'r1'
hbase> t.dele­teall 'r1', 'c1'
hbase> t.dele­teall 'r1', 'c1', ts1

truncate

#删除表t3­,不用­disable
truncate 't3'