2016-03-28 35 views
0

假設我的HBase表需要由四個不同元素(K1:DateTime,K2:Int,K3:String,K4:Double)組合的密鑰訪問。爲此構建密鑰的最佳做法是什麼?我特別關心可變長度數據類型(字符串)。如何編寫一個可變長度組成部分的HBase密鑰

目前我正在將字節長度附加到字符串,以便我可以從關鍵字節中解析出每個元素。我在想,如果字符串長度不匹配,開頭的長度會導致快速檢查。這種方法有什麼缺點嗎?它會影響稍後基於部分密鑰的查詢嗎? (我是相當新的HBase已經修補了它只有一個星期)

老實說,我不喜歡字符串成爲鍵的一部分,我試圖讓人們使用某種枚舉而不是字符串,但不知道我能否說服他們。假設我堅持將字符串作爲關鍵字的一部分,那麼用這些元素組成關鍵字的最佳方法是什麼?

回答

0

如果您的字符串'K3'在這裏是不可避免的,那麼它可以保持爲每個單元hBase中隱式分配的10 MB大小。 現在可以在這裏捕獲高達毫秒的DateTime。 這種情況下有兩種方法可用:RegexStringComparator和SubstringComparator。請參閱他們的使用風格。

如果字符串的長度在這裏提供了對數據的實質性過濾,請在開始時保持相同,然後在每個元素之間使用正則表達式。 在這裏使用RegexStringComparator。 否則在開始時提供字符串並使用RegexStringComparator並將所需數據作爲參數傳遞。

N.B:如果提供真實數據,挖掘解決方案會更容易。

相關問題