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

1、基本命令

打開 Hbase Shell:git

# hbase shell

1.1 獲取幫助

# 獲取幫助
help
# 獲取命令的詳細信息
help 'status'

1.2 查看服務器狀態

status

1.3 查看版本信息

version

2、關於表的操做

2.1 查看全部表

list

2.2 建立表

命令格式: create '表名稱', '列族名稱 1','列族名稱 2','列名稱 N'github

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

2.3 查看錶的基本信息

命令格式:desc '表名'shell

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、增刪改

3.1 添加列族

命令格式: alter '表名', '列族名'大數據

alter 'Student', 'teacherInfo'

3.2 刪除列族

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

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

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

默認狀況下,列族只存儲一個版本的數據,若是須要存儲多個版本的數據,則須要修改列族的屬性。修改後可經過 desc 命令查看。get

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

3.4 插入數據

命令格式:put '表名', '行鍵','列族:列','值'string

注意:若是新增數據的行鍵值、列族名、列名與原有數據徹底相同,則至關於更新操做it

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'

4、查詢

hbase 中訪問數據有兩種基本的方式:io

  • 按指定 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 開源項目大數據入門指南

相關文章
相關標籤/搜索