2017-06-03 45 views
0

我行鍵的初始啓動部分看起來像「爲YYYYMMDDhhmmss」其中「SS」始終爲00 例如:20170603162100,對應於16:21 2017年6月6日上 (不要問我爲什麼,但時間戳必須在開始的密鑰!)HBASE順序排鍵(YYYYMMDDHHMMSS),確定性非隨機調節

這顯然是每分鐘(顯然每分鐘是獨特的)數據。

這患有區域熱點。 行鍵會是這樣一個區域服務器上:

我讀模式:獲取數據的唯一分鐘(不是一小時,一天,一個月,一年)

說我有10區服務器。

這裏是一個解決方案,我在想,這看起來像是一種鹽(但是是確定性的,而不是隨機的):

我看到mm零件 - 分鐘,並指定基於該鹽。 00分:前綴A至行密鑰 01分鐘:前綴B至行密鑰 .. 09分鐘:前綴J確定行密鑰 10分鐘:前綴A至行密鑰

這樣,所有的「A」鍵應分發到第一個區域服務器,等等。 優點可能是:對同一個區域服務器的所有單一分鐘請求,這對我來說是可以忍受的。並在接下來的一分鐘,所有請求到其他地區的服務器。

另外,檢索時,我不必做平行讀取,因爲我實際上知道鹽。

有人可以解釋我是否在某個地方錯了嗎?

回答

1

那麼,你只有27分鐘覆蓋英文字母,可能我會建議使用雙字母鹽,它仍然應該正確分發。 (你有多少個節點?)。

或者,您可以嘗試從行鍵中移除秒並將其倒轉。

+0

我有10個區域服務器。這就是爲什麼建議使用A-J然後重複A-J。我在哪裏錯了嗎? 另外!相反的想法真棒! – user4560

+0

你肯定會避免用這種方法進行熱點。但是,我可能是錯的,但我不確定區域服務器和rowkey的第一個字母之間是否存在1到1的映射(可能很少有字母不按字典順序關閉可能會在一個區域服務器上結束)。 – Rumoku