2013-06-25 55 views
2

我一直在使用CouchDB一段時間,而且我正在考慮在HBase/Hadoop中做一個小的學術項目。我讀了一些關於它們的材料,但是找不到一個好的答案:使用Hadoop和HBase增量MapReduce

在Hadoop/HBase和CouchDB中都使用MapReduce作爲它們的主要查詢方法。但是,有一個顯着的不同:CouchDB通過使用視圖增量化地實現了這一點,索引每個添加到數據庫的新數據,而Hadoop(從我看到的所有示例中)通常用於對整個數據集執行完整查詢。我所缺少的是能夠使用Hadoop MapReduce來構建並主要維護索引,如CouchDB的視圖。我看到了一些關於如何使用MapReduce創建初始​​索引的例子,但沒有提到增量更新。

我認爲這裏的主要挑戰是隻對自給定時間戳(上次索引作業的時間)以來更改的行運行索引作業。這將使這些工作運行很短的時間,使他們能夠頻繁運行,保持索引相對最新。

我預計這種使用模式非常普遍,並且很驚訝沒有看到任何有關它的信息。我已經看到了IndexedHbaseHbaseIndexed,它們都提供了基於非關鍵行的HBase的二級索引。這是不是我需要什麼。我需要編程能力根據一行或多行的內容任意定義索引。

回答

0

一種方法可能是使用Timestamp作爲rowkey。這將允許您根據某些給定時間處理行。

由於我在談論基於TS的rowkey,use hashing to avoid hotspotting

+0

我知道使用TS作爲rowkey將允許我查詢新創建的行,但是如何查詢最近修改的行? –

+0

使用TimestampsFilter。 – Tariq