如何在 hbase 表中获取计数记录?查询记录的最快方法是啥?

Posted

技术标签:

【中文标题】如何在 hbase 表中获取计数记录?查询记录的最快方法是啥?【英文标题】:How to get count record in hbase table? which is fastest way to query the record?如何在 hbase 表中获取计数记录?查询记录的最快方法是什么? 【发布时间】:2015-08-07 06:25:35 【问题描述】:

我在 HBase 表中有 1 亿条记录。我已经创建了配置单元外部表。

如何以最快的方式查询记录。

Hive ---> 从表中选择 count(*)。

运行查询超过 8 小时。

请指导我

【问题讨论】:

您使用的是什么版本的 CDH Balaji ? ....假设您在其他答案的 cmets 的基础上使用 Cloudera 【参考方案1】:

我认为这里更好的方法是在内置的 RowCounter 操作中使用 Hbase,该操作在内部运行 map reduce 作业来计算行数。

语法:

hbase org.apache.hadoop.hbase.mapreduce.RowCounter mytable

【讨论】:

那么我认为没有更好的方法来获得计数。这可能需要很长时间的一个原因是您的集群非常小。 上述命令给出了大约一分钟内 1100 万的计数。所以集群或使用有问题。使用 map reduce 是在 Hbase 中执行计数的最佳方式。 正是因为 RowCounter 内部只运行 map reduce 作业,没有更有效的方法来做到这一点【参考方案2】:

Hive 直接支持 COUNT() 查询- SELECT COUNT(*) FROM table

但是随着记录的增加,它会变慢,因为 hive 使用 MapReduce 作业。如果您想快速查询,我建议您使用Apache Phoenix 或ORM 工具Kundera

【讨论】:

以上是关于如何在 hbase 表中获取计数记录?查询记录的最快方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在没有重新查询的情况下访问另一个表中的查询计数记录?

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?

如何使用 group by(基于一列)从表中选择多列,在 hive 查询中具有和计数

如何使用计数查询来(自动)更新表中的列

Sqlite - 如果有相同的号码,如何查询呼叫日志继续获取单个记录只有连续记录计数?

如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录