HBase访问和索引

时间:2011-12-02 19:54:00

标签: indexing hbase

我有一个HBase表,大约有5000万行,每行有几列。我的目标是从表中检索在给定列中具有给定值的行,例如列'col_1'的值为'val_1'的行。

我有两个选择:

  1. 从头到尾扫描表格,检查每一行,看看是否应该检索;
  2. 为此表构建索引(例如,列'col_1'中值的索引),然后对于给定列值'val_1',获取与此索引'val_1'关联的所有行键,然后通过这些行键并检索相应的行。在我看来,这将涉及对原始hbase表的随机访问。
  3. 有没有人给我一些关于哪个选项运行得更快的建议,或者你有另一个更好的选择?

    非常感谢!

3 个答案:

答案 0 :(得分:4)

您是否在询问添加索引是否会加快速度?答案当然是肯定的。您可以看到the wiki关于HBase中二级索引的想法。

答案 1 :(得分:2)

索引肯定比每次扫描50M行更快。如果您使用已具有协处理器的hbase版本,则可以遵循Xodarap建议。如果您使用的是旧版本的Hbase,则需要设置一个附加表作为索引并手动更新(每次更新主表时或偶尔通过map / reduce)

答案 2 :(得分:1)

二级索引会更快。您还可以尝试使用culvert之类的辅助索引库,而不是创建自己的索引。