solr - 提高HBase查询性能

标签 solr indexing elasticsearch hbase real-time

我有一个庞大的HBase表,大约有五十亿行,其中包含约100列(每行不同)的数据。

我想根据任何列限定符值尽快查询此数据。

我知道当我们知道ROW-KEY时HBase已针对快速读取进行了优化,但是我想基于不同的列值进行查询。但是,应用列过滤器(使用JAVA API)会导致全表扫描,这会减慢系统速度

我有什么选择?

  • 索引:每行中存在的列都会更改。我还能做索引吗?
  • 我是否继续使用HBase来存储数据?还是将其与Solr或ElasticSearch一起使用?
  • 对于基于可能具有十亿行的任何列值的随机查询,我可以期望什么样的性能?

  • 欢迎其他任何建议。

    最佳答案

    在Hbase中,从行键获取数据的速度很快,但是由于未对值进行索引,因此使用值过滤器进行查询很容易。如果要索引的列数很小,则可以考虑使用反向表索引。

    但是,如果您想要更多事情,例如多条件查询,则应该看看elasticsearch并使用它来仅将索引存储在列中,并将数据保留在hbase中。创建索引时,请不要忘记使用“_source”:{“enabled”:false}禁用源存储,所有数据已经​​在hbase中,不要浪费HDD :)

    关于solr - 提高HBase查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22150191/

    相关文章:

    ruby-on-rails - 如何将最新版本的 Sunspot gem 与 Solar Cell 一起使用?

    mysql - 我怎样才能说服这个 MYSQL 查询使用索引?

    java - 如何在docker compose中配置logstash?

    python - 如何使用elasticsearch.helpers.scan获得聚合结果的分数

    elasticsearch - Elasticsearch :如何 'OR'两个不同的嵌套查询?

    java - 频繁调用 Solr 查询期间 Solr 错误 -> "Cannot assign requested address (connect failed)"

    mysql - 对于地理空间索引,Solr 和 MongoDB 在功能上有什么区别?

    Solr:如何仅突出显示整个搜索词组?

    mysql - 应该添加哪些索引来加快海量InnoDB表的查询速度?

    sql - 在 firebird 中使用计算的上位索引来比较不区分大小写的字符串