打開 Hbase Shell:git
# hbase shell
# 獲取幫助 help # 獲取命令的詳細信息 help 'status'
status
version
list
命令格式: create '表名稱', '列族名稱 1','列族名稱 2','列名稱 N'github
# 建立一張名爲Student的表,包含基本信息(baseInfo)、學校信息(schoolInfo)兩個列族 create 'Student','baseInfo','schoolInfo'
命令格式:desc '表名'shell
describe 'Student'
enable 和 disable 能夠啓用/禁用這個表,is_enabled 和 is_disabled 來檢查表是否被禁用服務器
# 禁用表 disable 'Student' # 檢查表是否被禁用 is_disabled 'Student' # 啓用表 enable 'Student' # 檢查表是否被啓用 is_enabled 'Student'
exists 'Student'
# 刪除表前須要先禁用表 disable 'Student' # 刪除表 drop 'Student'
命令格式: alter '表名', '列族名'大數據
alter 'Student', 'teacherInfo'
命令格式:alter '表名', {NAME => '列族名', METHOD => 'delete'}code
alter 'Student', {NAME => 'teacherInfo', METHOD => 'delete'}
默認狀況下,列族只存儲一個版本的數據,若是須要存儲多個版本的數據,則須要修改列族的屬性。修改後可經過 desc
命令查看。get
alter 'Student',{NAME=>'baseInfo',VERSIONS=>3}
命令格式: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'
# 獲取指定行中全部列的數據信息 get 'Student','rowkey3' # 獲取指定行中指定列族下全部列的數據信息 get 'Student','rowkey3','baseInfo' # 獲取指定行中指定列的數據信息 get 'Student','rowkey3','baseInfo:name'
# 刪除指定行 delete 'Student','rowkey3' # 刪除指定行中指定列的數據 delete 'Student','rowkey3','baseInfo:name'
hbase 中訪問數據有兩種基本的方式:io
按指定 rowkey 獲取數據:get 方法;
按指定條件獲取數據:scan 方法。
scan
能夠設置 begin 和 end 參數來訪問一個範圍內全部的數據。get 本質上就是 begin 和 end 相等的一種特殊的 scan。
# 獲取指定行中全部列的數據信息 get 'Student','rowkey3' # 獲取指定行中指定列族下全部列的數據信息 get 'Student','rowkey3','baseInfo' # 獲取指定行中指定列的數據信息 get 'Student','rowkey3','baseInfo:name'
scan 'Student'
scan 'Student', {COLUMN=>'baseInfo'}
# 查詢指定列的數據 scan 'Student', {COLUMNS=> 'baseInfo:birthday'}
除了列 (COLUMNS)
修飾詞外,HBase 還支持 Limit
(限制查詢結果行數),STARTROW
(ROWKEY
起始行,會先根據這個 key
定位到 region
,再向後掃描)、STOPROW
(結束行)、TIMERANGE
(限定時間戳範圍)、VERSIONS
(版本數)、和 FILTER
(按條件過濾行)等。
以下表明從 rowkey2
這個 rowkey
開始,查找下兩個行的最新 3 個版本的 name 列的數據:
scan 'Student', {COLUMNS=> 'baseInfo:name',STARTROW => 'rowkey2',STOPROW => 'wrowkey4',LIMIT=>2, VERSIONS=>3}
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 開源項目: 大數據入門指南