1. 程式人生 > >HBase shell命令小記

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

','rowkey','familyName:columnName','columnValue'

(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',

'column2'],LIMITS=>10,STARTROW=>'',STOPROW=>''}(限定列,記錄數,起止行)

(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的值 

先寫這麼多,後續有常用的命令再繼續補充大笑