2012-07-10 53 views
2

我正在使用SingleColumnValueFilter,scan,getScanner,並從hbase表中檢索值。正在生成的值在行Id-vise中排序。但是我希望將結果排序在價值中。HBase按值排序

實施例:

Hbase Table: 
RowId | col1:amount | col1:balance 
    1   5000   1000 
    2   3000   1500 
    3   4000   500 

現在,當我在Web UI選擇量(我定製)。 然後,Result應該按數量排序。

Expected Result after chosen amount column: 

RowId | **col1:amount** | col1:balance 
    2   3000   1500 
    3   4000   500 
    1   5000   1000 

回答

2

如果要排序的東西價值wise-不幸的是,這將不會發生的HBase。 HBase按行鍵對數據進行排序,並按照字典順序排列。

您需要做的是創建一個二級索引,其中rowKey包含該值。在你的情況下,數值是數字,所以你必須填零你的數字才能使字典排序正常工作。

這裏是你如何組織你的二級索引:

Hbase Table: 
RowId | col1:amount | col1:balance 
    val000500   rowID   3 
    val001000   rowID   1 
    val001500   rodID   2 

當你拿到二級索引,它會返回自己的原始數據的行ID。使用該行ID從原始記錄中獲取其餘數據。

+1

是否知道如何使用協處理器創建二級索引。你能分享一些代碼嗎? – Balaji 2012-07-11 05:48:57