2013-04-23 81 views
2

我在HBase的創建以下架構,HBase的行鍵設計

create 'test','lg' 

put 'test','row1','lg:htype','get' 
put 'test','row1','lg:ip','192.168.12.123' 
put 'test','row1','lg:stat','success' 

對於這個模式,我想創建一個rowkey。我的問題是如何在hBase shell中創建一個行鍵。

使用上述模式我創建了列族。如何使用hbase shell定義行密鑰。或者我需要像我定義爲列族那樣定義rowkey。如果是這樣的話,HBase如何區分它是一個列族成員,並且這個字段是一個行鍵。

我想將我的rowkey作爲userid和timestamp的組合鍵。所以請讓我知道如何通過shell在hbase中創建一個複合行密鑰。

請幫忙。

回答

1

在這種情況下,「row1」是你的rowkey。沒有設計時間的方式來指定行鍵,因爲對於HBase他們只是字節數組。要做更奇特的事情,你需要在應用程序代碼(Java,Ruby腳本等)中完成。

如果你想在某種程度上,你預先定義的行鍵結構與HBase的互動,你可以嘗試鳳凰,一個開源的SQL「皮膚」上的HBase:

https://github.com/forcedotcom/Phoenix

(全披露:鳳凰項目最初是由我的僱主Salesforce創建的。)

1

正如伊恩所說,您不需要「創建」行鍵,您作爲行鍵所寫的行將是行鍵,只是一個字節陣列而已。

你仍然需要思考什麼是適合你的正確行鍵。當您這樣做時,您需要考慮您爲數據規劃的訪問模式以及hbase表的構建方式,密鑰按盤按字母順序排列,存儲的每個值都有一個時間戳,限定符分組成列組等。