我有以下设置
2 节点 hadoop/hbase 集群,thirft 服务器在 hbase 上运行。
Hbase 有一个包含 1000 万行的表。
我需要在 hbase 表上运行 sum() 之类的聚合查询以在网络上显示它(图表目的)。
现在我正在使用 python(thrift client) 来获取数据集并显示。
我正在寻找要在网络中使用的数据库(hbase)级聚合函数。
有什么想法吗?
这通常是一个 map reduce 作业。您可能希望考虑使用 Hive 为您提供一种类似 SQL 的方式来编写查询。https://cwiki.apache.org/Hive/hbaseintegration.html
对于 Hbase 表比 Hive 的低延迟结果,Phoenix 是一个很好的解决方案。它比 Hbase 扫描器更适合范围扫描,因为它们使用二级索引和 SkipScan。与您的情况一样,您使用 Python 和 phoenix API 只有 JDBC 连接器。
其他尝试 Hbase 协处理器。执行 SUM、MAX、COUNT、AVG 函数。您可以在创建表时启用协处理器,并且可以使用协处理器功能
你可以试试 Impala,它提供了 ODBC 连接器、JDBC 连接器。Impala 使用 hive 元表来执行大规模并行批处理。您需要为您的 Hbase 表创建一个 Hive 元表。