2017-03-08 151 views
4

因此,讓我們看看我能否簡單解釋我的問題。HBase掃描 - RowKey過濾器

假設我們得到了有迪斯科每次訪問的信息的HBase的表: 每迪斯科註冊其,訪問者的名稱,天他參觀了它。 (是的這是一個愚蠢的例子,我知道 ..)。

因此,舉例來說,這些將是表中的一些值:

.. 
ministryOfSoundJamesOliver01022017 
ministryOfSoundJamesOliver02022017 
ministryOfSoundJamesOliver03022017 
ministryOfSoundOliviaNewton04042017 
ministryOfSoundOliviaNewton06042017 
... 
pachaibizaJohnMcKiness06042017 
pachaibizaJohnMcKiness04042017 
pachaibizaWilliamForrester04042017 
.. 

RowKey具有以下結構:

discoName

PERSONNAME

dayOfTheYear

(表中有一些其他列/限定符,但我不介意這個問題)。


的問題是:想象一個男孩,單純喜歡去省聲。他只是喜歡它,他花他所有的錢在迪斯科和藥物(,但這不是點)。

我的目標是要輸出每個人都出席Ministry Of Sound。在我的掃描中,這個傢伙不斷出現在結果中,所以我必須放棄搜索下一位訪問者的許多條目。 F.E:

.. 
ministryOfSoundJohnnyYonkie01022017 
ministryOfSoundJohnnyYonkie02022017 
ministryOfSoundJohnnyYonkie03022017 
ministryOfSoundJohnnyYonkie04022017 
ministryOfSoundJohnnyYonkie05022017 
ministryOfSoundAnotherDude02022017 
... 

爲了註冊AnotherDude,我必須從約翰尼放棄4項。

最後,問題是:


有沒有辦法告訴HBase的,從字節重複條目(X),以字節(X + Y)X是字節從數discoName和y的字節數從personName]必須是自動丟棄


非常感謝!第一

+0

什麼是數據訪問模式?你使用Hadoop和MapReduce,還是隻使用HBase客戶端API掃描表?您是否想跳過HBase服務器端或客戶端上的條目,因此數據處理功能將只接受獨特的迪斯科用戶條目?我沒有完全理解這種情況。 – AdamSkywalker

+0

嗨@AdamSkywalker!我們通過客戶端API(使用thrift和C#)連接到Hbase,我們的目標是跳過服務器端的條目。 謝謝! –

+1

您是否考慮用給定的startKey創建新的掃描以跳過條目?例如,當您找到JohnnyYonkie時,使用開始鍵'ministryOfSoundJohnnyYonkie99999'創建新的掃描。 – AdamSkywalker

回答

1

一件事:如果你只有客戶端訪問,我也幫不了你:(

如果您有其他訪問,那麼你可以看看下面的命題,但默認的回答是: 如果這是您的訪問模式,請優化您的模式。

如果您需要以某種方式訪問​​數據,請確保您首先以這種方式編寫數據。如果您必須執行遷移,請使用map-reduce API。

我可能會簡單地添加一個表,只寫一行ministryOfSound和每個訪問者的列。 (一般來說,您提出的模式聽起來不太適合HBase--因爲如果後處理重複結果的確是性能問題,那麼您有大量的單行增加的寫入操作)

On the另一方面,如果這是一個臨時查詢,那麼您可能想要馬上使用mapreduce-API - 可能使用Apache Spark互連並對數據執行「不同的」調用。

使用Scans進行分析查詢並不是我該怎麼做的。

如果你不得不使用Scans來做,那麼我會建議你實現一個CoProcessor。這些可以增加Filter的狀態,並且您可以在Region Server端投影PrefixFilter'd Scan的結果。如果您是CoProcessors的新手,請參閱:HBase: The Definitive Guide。這要求您可以將jar部署到RegionServer類路徑中。

但是,如果您通過在那裏進行不同的過濾來炸燬客戶端,那麼由於插入點上的熱點,您可能也炸燬了您的區域。

作爲最後的選擇:你可能想看看Apache Phoenix,看看你是否可以將你的rowkey強制到一個模式中,從中你可以對rowkey的前兩部分做出不同的選擇。這顯然要求你在你的rowkey中有分隔符,或者至少有一個固定的長度。

+0

沒有達到解決方案,但您的文章是豐富的,所以給你打勾 –