【Hbase】掌握這些經常使用 hbase shell 命令,工做更輕鬆

本文將介紹一些開發以及運維工做中常常用到的 Hbase Shell 命令。做爲開發以及運維人員這些經常使用命令是須要了解並常常使用的,固然能夠沒必要將他們死記硬背下來。若是在某些場景下想到須要使用某個命令,可是又不知道具體的使用方法時,能夠掃一眼這篇文章(熟練使用 mysql 命令的用戶可能會以爲 hbase shell 命令的設計有點費解--!)。

Hbase Shell 爲 Hbase 提供了一套「簡單方便」的命令行工具。使用它能夠很好地與 Hbase 進行交互,例如查看 Hbase 集羣狀態、對 Hbase 數據進行增刪改查操做等等。啓動 Hbase 以後,咱們能夠經過 "hbase shell" 來進入 Hbase Shell 命令行。 mysql

Hbase Shell 中運行 help 命令能夠看到有哪些命令可使用。這些命令按照功能範圍被分紅了不少組(Command Groups),每組都包含了若干個命令。本文我選取幾個平常工做中經常使用的命令來進行介紹(對其餘命令感興趣的朋友,能夠逐個百度或者 google 進行了解),這些命令主要分佈在 general(通用)、ddl(data manipulation language:數據操做語言)、dml(data definition language:數據定義語言) 這些分組中。 sql

General

  • status
  • version
  • table_help
  • whoami

status

status 命令顯示 hbase 集羣的狀態,包括 master、region server 的數量和活躍狀況,還包括集羣的負載狀況。

而且,咱們還能夠在 status 後面加上 'simple'、'summary' 或者 'detauled' 字段來獲取更加詳細的信息。這裏,不加任何字段的 status 等同於 status 'summary'。shell

version

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

table_help

一些關於表操做命令的幫助介紹(Help for table-reference commands)。數據庫

whoami

查詢當前的 hbase 用戶bash

DDL & DML

DDL 和 DML 這兩類命令是工做中常常須要使用到的,而且二者關聯性較大,因此這裏將 這兩類的命令放在一塊兒講解。微信

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

list

列出數據庫中全部表運維

exists

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

6

create

建立表 用法: create '表名','列族1','列族2'google

hbase(main):007:0> create 'kooola','cf1','cf2'
複製代碼

例如上面的語句就建立了擁有兩個列族(cf一、cf2)的表,表名爲kooolaspa

describe

查看錶的結構 用法: 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
複製代碼

顯而易見,查看剛剛建立的 kooola 表,發現有兩個列族:cf1 和 cf2

put

向指定表插入數據 用法: put '表名','rowkey','列族:列名','值'。

列簇下的列不須要提早建立,插入值時經過'列族:列名'來指定就行,這意味着 hbase 對錶結構的要求更加靈活

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

例如上面的命令,就是向 kooola 表中插入一行數據,其中 rowkey 爲 xxxxxx1,cf1 列族的 name 列有一個值爲 march

count

查詢表的記錄數 用法:count '表名'

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

scan

查詢表數據 用法: scan '表名' 固然你也能夠增長一些過濾器來指定查詢條件。

咱們能夠認識一些關鍵字,例如 COLUMN 和 COLUMNS 進行列族、列過濾;STARTROW 和 STOPROW 用以標識起始、終止rowkey;LIMIT 指定查詢的個數;VERSIONS 指定版本。

hbase(main):001:0> scan 'kooola'
查詢全部數據
複製代碼
scan 'kooola', {COLUMN=>'cf1'}
指定列族進行查詢
複製代碼
scan 'kooola', {COLUMNS=> 'cf1:name'}
指定列進行查詢
複製代碼
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 對值進行過濾

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'

掃碼關注微信公衆號
相關文章
相關標籤/搜索