HBase 系列(五)——HBase常用 Shell 命令

disable發表於2021-09-09

一、基本命令

開啟 Hbase Shell:

# hbase shell

1.1 獲取幫助

# 獲取幫助
help
# 獲取命令的詳細資訊
help 'status'

1.2 檢視伺服器狀態

status

1.3 檢視版本資訊

version

二、關於表的操作

2.1 檢視所有表

list

2.2 建立表

命令格式: create ‘表名稱’, ‘列族名稱 1’,‘列族名稱 2’,‘列名稱 N’

# 建立一張名為Student的表,包含基本資訊(baseInfo)、學校資訊(schoolInfo)兩個列族
create 'Student','baseInfo','schoolInfo'

2.3 檢視錶的基本資訊

命令格式:desc ‘表名’

describe 'Student'

2.4 表的啟用/禁用

enable 和 disable 可以啟用/禁用這個表,is_enabled 和 is_disabled 來檢查表是否被禁用

# 禁用表
disable 'Student'
# 檢查表是否被禁用
is_disabled 'Student'
# 啟用表
enable 'Student'
# 檢查表是否被啟用
is_enabled 'Student'

2.5 檢查表是否存在

exists 'Student'

2.6 刪除表

# 刪除表前需要先禁用表
disable 'Student'
# 刪除表
drop 'Student'

三、增刪改

3.1 新增列族

命令格式: alter ‘表名’, ‘列族名’

alter 'Student', 'teacherInfo'

3.2 刪除列族

命令格式:alter ‘表名’, {NAME => ‘列族名’, METHOD => ‘delete’}

alter 'Student', {NAME => 'teacherInfo', METHOD => 'delete'}

3.3 更改列族儲存版本的限制

預設情況下,列族只儲存一個版本的資料,如果需要儲存多個版本的資料,則需要修改列族的屬性。修改後可透過 desc 命令檢視。

alter 'Student',{NAME=>'baseInfo',VERSIONS=>3}

3.4 插入資料

命令格式:put ‘表名’, ‘行鍵’,‘列族:列’,‘值’

注意:如果新增資料的行鍵值、列族名、列名與原有資料完全相同,則相當於更新操作

put 'Student', 'rowkey1','baseInfo:name','tom'
put 'Student', 'rowkey1','baseInfo:birthday','1990-01-09'
put 'Student', 'rowkey1','baseInfo:age','29'
put 'Student', 'rowkey1','schoolInfo:name','Havard'
put 'Student', 'rowkey1','schoolInfo:localtion','Boston'

put 'Student', 'rowkey2','baseInfo:name','jack'
put 'Student', 'rowkey2','baseInfo:birthday','1998-08-22'
put 'Student', 'rowkey2','baseInfo:age','21'
put 'Student', 'rowkey2','schoolInfo:name','yale'
put 'Student', 'rowkey2','schoolInfo:localtion','New Haven'

put 'Student', 'rowkey3','baseInfo:name','maike'
put 'Student', 'rowkey3','baseInfo:birthday','1995-01-22'
put 'Student', 'rowkey3','baseInfo:age','24'
put 'Student', 'rowkey3','schoolInfo:name','yale'
put 'Student', 'rowkey3','schoolInfo:localtion','New Haven'

put 'Student', 'wrowkey4','baseInfo:name','maike-jack'

3.5 獲取指定行、指定行中的列族、列的資訊

# 獲取指定行中所有列的資料資訊
get 'Student','rowkey3'
# 獲取指定行中指定列族下所有列的資料資訊
get 'Student','rowkey3','baseInfo'
# 獲取指定行中指定列的資料資訊
get 'Student','rowkey3','baseInfo:name'

3.6 刪除指定行、指定行中的列

# 刪除指定行
delete 'Student','rowkey3'
# 刪除指定行中指定列的資料
delete 'Student','rowkey3','baseInfo:name'

四、查詢

hbase 中訪問資料有兩種基本的方式:

  • 按指定 rowkey 獲取資料:get 方法;

  • 按指定條件獲取資料:scan 方法。

scan 可以設定 begin 和 end 引數來訪問一個範圍內所有的資料。get 本質上就是 begin 和 end 相等的一種特殊的 scan。

4.1Get查詢

# 獲取指定行中所有列的資料資訊
get 'Student','rowkey3'
# 獲取指定行中指定列族下所有列的資料資訊
get 'Student','rowkey3','baseInfo'
# 獲取指定行中指定列的資料資訊
get 'Student','rowkey3','baseInfo:name'

4.2 查詢整表資料

scan 'Student'

4.3 查詢指定列簇的資料

scan 'Student', {COLUMN=>'baseInfo'}

4.4 條件查詢

# 查詢指定列的資料
scan 'Student', {COLUMNS=> 'baseInfo:birthday'}

除了列 (COLUMNS) 修飾詞外,HBase 還支援 Limit(限制查詢結果行數),STARTROWROWKEY 起始行,會先根據這個 key 定位到 region,再向後掃描)、STOPROW(結束行)、TIMERANGE(限定時間戳範圍)、VERSIONS(版本數)、和 FILTER(按條件過濾行)等。

如下代表從 rowkey2 這個 rowkey 開始,查詢下兩個行的最新 3 個版本的 name 列的資料:

scan 'Student', {COLUMNS=> 'baseInfo:name',STARTROW => 'rowkey2',STOPROW => 'wrowkey4',LIMIT=>2, VERSIONS=>3}

4.5 條件過濾

Filter 可以設定一系列條件來進行過濾。如我們要查詢值等於 24 的所有資料:

scan 'Student', FILTER=>"ValueFilter(=,'binary:24')"

值包含 yale 的所有資料:

scan 'Student', FILTER=>"ValueFilter(=,'substring:yale')"

列名中的字首為 birth 的:

scan 'Student', FILTER=>"ColumnPrefixFilter('birth')"

FILTER 中支援多個過濾條件透過括號、AND 和 OR 進行組合:

# 列名中的字首為birth且列值中包含1998的資料
scan 'Student', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1998')"

PrefixFilter 用於對 Rowkey 的字首進行判斷:

scan 'Student', FILTER=>"PrefixFilter('wr')"

原始碼GitHub地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/200/viewspace-2825928/,如需轉載,請註明出處,否則將追究法律責任。