从HBASE获取列值的优化方法?

时间:2014-01-22 12:49:19

标签: hadoop indexing hbase bigdata

我有一种情况,我只知道hbase中的columnfamily和columnname,我想检索该特定列的所有唯一值,并在我的webapplication GUI上填充时间非常重要。

一种方法是尝试扫描应用colfamily和columnname,这需要花费时间并使最终用户等待这么久。

还有其他方法可以有效地进行吗?

如果你能提供帮助,那将会很棒。感谢

1 个答案:

答案 0 :(得分:1)

没有神奇的方法可以快速扫描用户界面的数据。它需要从磁盘中翻录列族中的所有数据以获取所需的信息。您可以通过任何交互方式从hbase获得的唯一内容是特定的rowkey get或非常小范围的扫描。

以下是一些高级方法:

  • 您是否关心延迟/更新?使用MapReduce作业或扫描每20分钟重新计算一次唯一列表,并将结果存储在某个文本文件中。
  • 使用协处理器确定每个区域的唯一列表,然后在客户端将唯一列表聚合到一个唯一列表中。这可能仍然太慢,但如果您有大量重复项并且网络已经饱和,它将加快您的扫描速度。
  • 重新考虑如何在hbase中存储数据。与RDBMS不同,我不能随意向列添加索引。在架构设计中,您必须考虑如何访问数据,然后将架构设计基于此。你想快速获得你的独特名单吗?也许您应该构建第二个表,其中原始值为键,然后指针指向原始rowkeys。
  • 您是否可以在单独的系统中跟踪唯一值,以便快速获取该信息?