2013-08-06 72 views
0

我可以將3個字符串組合爲HBase中的行鍵嗎?例如,X,Y和Z值的組合標識一個唯一的記錄。在hbase中使用分隔的rowkey

我會使用Java

能否請你讓我知道這是可能被連接到HBase的?

在此先感謝。

回答

0

隨着風險變得微不足道,可以將字符串與分隔符連接起來,以產生類似「x | y | z」的內容。

0

您可以使用分隔符,如'|'或用於行鍵的長度前綴字符串。

你也可以參考OpenTSDB的schema design

0

HBase不會阻止你這樣做。雖然你可以使用任何字符作爲分隔符,但可以嘗試使用不常見的東西,比如「〜」「^」。原因是,字符如「|」「,」很可能作爲數據的一部分出現。

一對夫婦的建議,但:

  • 儘量保持rowkey的長度儘可能小。
  • 嘗試使用數字鍵代替字符串(如果可能)。

HTH

附: :獲得這些類型查詢的答案的最佳方法是嘗試它。這應該不會超過幾分鐘。


您可以使用PrefixFilter來實現。給定一個前綴,在實例化過濾器實例時指定,與此前綴匹配的所有行將返回給客戶端。的構造是:

公共PrefixFilter(字節[]前綴)

實施例:

過濾濾波器=新PrefixFilter(Bytes.toBytes( 「9874541235 ^移動設備^ MOBILESOURCE」));

這會給你所有以9874541235^MOBILEDEVICE^MOBILESOURCE開頭的行。

+0

根據我的要求,我實際上應該使用密鑰作爲電話號碼(10位數字),至少8個字符的代碼和8個代碼字符的另一個代碼。所以我的鑰匙就像9874541235^MOBILEDEVICE^MOBILESOURCE。不幸的是,我不得不使用這個組合作爲關鍵字,因爲只有這些組合形成一個唯一的關鍵。請給我建議 – priya

+0

看起來還行:) – Tariq

+0

嗨我有一個問題,使用9874541235^MOBILEDEVICE^MOBILESOURCE作爲一個關鍵。這不是一個獨特的價值。 9874541235^MOBILEDEVICE^MOBILESOURCE^VALUE的組合是一個獨特的關鍵。但問題是,當我試圖檢索信息時,我將只有9874541235^MOBILEDEVICE^MOBILESOURCE作爲請求。你有什麼建議如何設計相同? – priya