【Hbase】掌握這些常用 hbase shell 命令,工作更輕松


本文將介紹一些開發(fā)以及運(yùn)維工作中經(jīng)常用到的 Hbase Shell 命令轮洋。作為開發(fā)以及運(yùn)維人員這些常用命令是需要了解并經(jīng)常使用的愕鼓,當(dāng)然可以不必將他們死記硬背下來愿题。如果在某些場景下想到需要使用某個命令堪旧,但是又不知道具體的使用方法時涩禀,可以掃一眼這篇文章(熟練使用 mysql 命令的用戶可能會覺得 hbase shell 命令的設(shè)計(jì)有點(diǎn)費(fèi)解--!)曹货。

Hbase Shell 為 Hbase 提供了一套“簡單方便”的命令行工具咆繁。使用它可以很好地與 Hbase 進(jìn)行交互,例如查看 Hbase 集群狀態(tài)顶籽、對 Hbase 數(shù)據(jù)進(jìn)行增刪改查操作等等玩般。啟動 Hbase 之后,我們可以通過 "hbase shell" 來進(jìn)入 Hbase Shell 命令行礼饱。


Hbase Shell 中運(yùn)行 help 命令可以看到有哪些命令可以使用坏为。這些命令按照功能范圍被分成了很多組(Command Groups),每組都包含了若干個命令镊绪。本文我選取幾個日常工作中常用的命令來進(jìn)行介紹(對其他命令感興趣的朋友久脯,可以逐個百度或者 google 進(jìn)行了解),這些命令主要分布在 general(通用)镰吆、ddl(data manipulation language:數(shù)據(jù)操作語言)帘撰、dml(data definition language:數(shù)據(jù)定義語言) 這些分組中。


General

  • status
  • version
  • table_help
  • whoami

status


status 命令顯示 hbase 集群的狀態(tài)万皿,包括 master摧找、region server 的數(shù)量和活躍情況,還包括集群的負(fù)載情況牢硅。

并且蹬耘,我們還可以在 status 后面加上 'simple'、'summary' 或者 'detauled' 字段來獲取更加詳細(xì)的信息减余。這里综苔,不加任何字段的 status 等同于 status 'summary'。

version


version 命令很好理解,就是查看 hbase 版本了如筛。

table_help

一些關(guān)于表操作命令的幫助介紹(Help for table-reference commands)堡牡。

whoami

查詢當(dāng)前的 hbase 用戶

DDL & DML

DDL 和 DML 這兩類命令是工作中經(jīng)常需要使用到的,并且兩者關(guān)聯(lián)性較大杨刨,所以這里將 這兩類的命令放在一起講解晤柄。

  • list
  • exists
  • create
  • describe
  • put
  • count
  • scan
  • get
  • delete
  • deleteall

list

列出數(shù)據(jù)庫中所有表

exists

判斷表是否存在
用法: exists '表名'


6
6

create

創(chuàng)建表
用法: create '表名','列族1','列族2'

hbase(main):007:0> create 'kooola','cf1','cf2'

例如上面的語句就創(chuàng)建了擁有兩個列族(cf1、cf2)的表妖胀,表名為kooola

describe

查看表的結(jié)構(gòu)
用法: describe '表名'

hbase(main):010:0> describe 'kooola'
Table kooola is ENABLED
kooola
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLO
CKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'cf2', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLO
CKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
2 row(s) in 0.0360 seconds

顯而易見芥颈,查看剛剛創(chuàng)建的 kooola 表,發(fā)現(xiàn)有兩個列族:cf1 和 cf2

put

向指定表插入數(shù)據(jù)
用法: put '表名','rowkey','列族:列名','值'赚抡。

列簇下的列不需要提前創(chuàng)建爬坑,插入值時通過'列族:列名'來指定就行,這意味著 hbase 對表結(jié)構(gòu)的要求更加靈活

hbase(main):013:0> put 'kooola','xxxxxx1','cf1:name','march'

例如上面的命令,就是向 kooola 表中插入一行數(shù)據(jù)涂臣,其中 rowkey 為 xxxxxx1盾计,cf1 列族的 name 列有一個值為 march

count

查詢表的記錄數(shù)
用法:count '表名'

hbase(main):002:0> count 'kooola'
1 row(s) in 0.0320 seconds

scan

查詢表數(shù)據(jù)
用法: scan '表名'
當(dāng)然你也可以增加一些過濾器來指定查詢條件。

我們可以認(rèn)識一些關(guān)鍵字肉康,例如 COLUMN 和 COLUMNS 進(jìn)行列族闯估、列過濾;STARTROW 和 STOPROW 用以標(biāo)識起始吼和、終止rowkey涨薪;LIMIT 指定查詢的個數(shù);VERSIONS 指定版本炫乓。

hbase(main):001:0> scan 'kooola'
查詢所有數(shù)據(jù)
scan 'kooola', {COLUMN=>'cf1'}
指定列族進(jìn)行查詢
scan 'kooola', {COLUMNS=> 'cf1:name'}
指定列進(jìn)行查詢
scan 'kooola', { STARTROW => 'xxxxxx1', LIMIT=>2, VERSIONS=>1}
rowkey 從 xxxxxx1 開始查詢 2 個版本為 1 的記錄
scan 'kooola', {COLUMNS => ['cf1', 'cf2'], LIMIT => 10, STARTROW => 'xxxxxx1'}
rowkey 從 xxxxxx1 開始查詢 10 條記錄刚夺,記錄只顯示列族為 cf1 和 cf2 的值

例外我們也可以使用 FILTER 對值進(jìn)行過濾

scan 'kooola',FILTER=>"RowFilter(=,'binary:xxxxxx1')"
查詢 rowkey 為 xxxxxx1 的記錄
scan 'kooola',FILTER=>"RowFilter(>,'binary:xxxxxx1')"
查詢 rowkey 大于 xxxxxx1 的記錄
scan 'kooola',FILTER=>"RowFilter(=,'substring:xxx1')"
查詢 rowkey 中包含 xxx1 的記錄
scan 'kooola',FILTER=>"ValueFilter(=,'binary:march')"
查詢擁有 march 值的記錄
scan 'kooola',FILTER=>"ValueFilter(=,'substring:arch')"
查詢值包含 arch 的記錄
scan 'kooola',FILTER=>"PrefixFilter('xxxx')"
查詢 rowkey 前綴為 xxxx 的記錄

get

獲取行或單元的值
用法:
get '表名','rowkey'
get '表名','rowkey','列族'
get '表名','rowkey','列族:列'

get 'kooola','xxxxxx1'
get 'kooola','xxxxxx1','cf1:name'

delete

使用 delete 命令,可以在一個表中刪除特定單元格
用法:
delete '表名', 'rowkey', '列族:列'

deleteall

使用“deleteall”命令末捣,可以刪除一行中所有單元格
deleteall '表名', 'rowkey'

掃碼關(guān)注微信公眾號"Kooola大數(shù)據(jù)"侠姑,聊人生|聊技術(shù)
掃碼關(guān)注微信公眾號"Kooola大數(shù)據(jù)",聊人生|聊技術(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箩做,一起剝皮案震驚了整個濱河市莽红,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邦邦,老刑警劉巖安吁,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異燃辖,居然都是意外死亡鬼店,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門黔龟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妇智,“玉大人滥玷,你說我怎么就攤上這事∥±猓” “怎么了惑畴?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拉盾。 經(jīng)常有香客問我桨菜,道長豁状,這世上最難降的妖魔是什么捉偏? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮泻红,結(jié)果婚禮上夭禽,老公的妹妹穿的比我還像新娘。我一直安慰自己谊路,他們只是感情好讹躯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缠劝,像睡著了一般潮梯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惨恭,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天秉馏,我揣著相機(jī)與錄音,去河邊找鬼脱羡。 笑死萝究,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锉罐。 我是一名探鬼主播帆竹,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼脓规!你這毒婦竟也來了栽连?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤侨舆,失蹤者是張志新(化名)和其女友劉穎秒紧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體态罪,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡噩茄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了复颈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绩聘。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡沥割,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凿菩,到底是詐尸還是另有隱情机杜,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布衅谷,位于F島的核電站椒拗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏获黔。R本人自食惡果不足惜蚀苛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玷氏。 院中可真熱鬧堵未,春花似錦、人聲如沸盏触。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赞辩。三九已至雌芽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辨嗽,已是汗流浹背世落。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留召庞,地道東北人岛心。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像篮灼,于是被迫代替她去往敵國和親忘古。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容