HBase shell命令小記
最近,在用Java api讀寫Hbase資料庫,時常需要用Hbase shell在命令列校驗結果是否準確,在這裡簡單記錄下一些常用的Hbase shell命令,以作備忘。
(1)建立表
create ‘tableName’,‘familyName1’,...,'familynameN' 建立表和列簇
(2)刪除表
disable 'tableName' 將表離線
drop 'tableName' 對錶做刪除標記
exists 'tableName' 判斷表是否存在
truncate 'tableName' 清空表
(3)增加或更新記錄(列不存在的話則是新增,列若存在則更新)
put 'tableName
(4)get查詢
get 'tableName','rowkey'(取出rowkey對應的多個列簇和列)
get 'tableName','rowkey','familyName:columnName' (取出rowkey對應的指定列簇和列)
get 'tableName','rowkey',{COLUMN=> ['column1','column2','column3']} (取出指定列簇多個列)
(5)scan掃描
scan 'tableName' (全表掃描)
scan 'tableName',{COLUMN=>['column1',
(6)藉助過濾器,scan掃描
在shell中匯入相應java類
import org.apache.hadoop.hbase.filter.SubstringComparator
import org.apache.hadoop.hbase.filter.RowFilter
import org.apache.hadoop.hbase.filter.CompareFilter
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
import org.apache.hadoop.hbase.util.Bytes
行鍵過濾器
scan 'tableName',{LIMIT => 5, FILTER => RowFilter.new(CompareFilter::CompareOp::EQUAL, SubstringComparator.new(strofrowkey))}
列值過濾器
scan 'tableName',{FILTER=>SingleColumnValueFilter.new(Bytes.toBytes(familyName),Bytes.toBytes(columnName),CompareFilter::CompareOp.valueOf('EQUAL'),Bytes.toBytes(value))}
scan 'member', FILTER=>"ValueFilter(=,'binary:26')" scan 'member', FILTER=>"ValueFilter(=,'substring:6')"
scan 'member', FILTER=>"ColumnPrefixFilter('birth') "
scan 'member', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1987')"
scan 'member', FILTER=>"FirstKeyOnlyFilter()" 僅取出每個列簇的第一個column的第一個版本。
scan 'member', FILTER=>"KeyOnlyFilter()" 對於每一個column只去取出key,把VALUE的資訊丟棄,一般和其他filter結合使用。
scan
'member', FILTER=>"PrefixFilter('E')" 對Rowkey的字首進行判斷,
其他過濾器類似,引入相應的類,修改相應的過濾條件
(7)刪除列族
disable‘tablename’,
再alter ‘tablename’,{NAME=>'columnfamily',METHOD=>'delete'},
enable ‘tablename’
(8)其他命令
count ‘tableName’ 統計行數
list 顯示已存在的表
describe ‘tableName’ 顯示錶列簇
status 查詢伺服器狀態
version 查詢版本
get_counter 'tablename','columnName','coulumnFamily:column'獲取當前count的值
先寫這麼多,後續有常用的命令再繼續補充