3

我正在使用 SingleColumnValueFilter、scan、getScanner 并从 hbase 表中检索值。结果值在 Id-vise 行中排序。但我希望结果在价值虎钳中进行排序。

例子:

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
4

1 回答 1

3

如果您想明智地对事物进行排序 - 不幸的是,这不会在 HBase 中发生。HBase 按行键对数据进行排序,并且按字典顺序进行。

您需要做的是创建一个二级索引,其中 rowKey 包含该值。在您的情况下,该值是数字,因此您必须对数字进行零填充才能使字典排序正常工作。

以下是构建二级索引的方法:

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

当您获取二级索引时,它将返回原始数据的行 ID。使用该行 ID 从原始记录中获取其余数据。

于 2012-07-10T15:43:13.897 回答