我想知道为什么HBase本身不支持SUM / AVG这样的聚合操作。我知道有几个解决方法可以实现同样的操作,但是尽管有这些解决方法,为什么HBase本身不提供它。更重要的是,请解释为什么不能执行这些与HBase所使用的键-值数据结构及其背后的查询逻辑有关的操作。
g6ll5ycj1#
HBase本身就支持聚合操作。Coprocessors允许在区域服务器上快速高效地聚合数据,正如@Kris提到的,有一个现成的AggregationClient协处理器可以执行常见的聚合,而无需编写和部署自定义代码。以(src)为例:
Configuration conf = HBaseConfiguration.create(); conf.setInt("hbase.client.retries.number", 1); conf.setInt("ipc.client.connect.max.retries", 1); byte[] table = Bytes.toBytes("t"); Scan scan = new Scan(); scan.addColumn(Bytes.toBytes("f"), Bytes.toBytes("id")); ColumnInterpreter<Long, Long> columnInterpreter = new LongStrColumnInterpreter(); AggregationClient aClient = new AggregationClient(conf); Long rowCount = aClient.min(table, columnInterpreter, scan); System.out.println("The min value is " + rowCount);
1条答案
按热度按时间g6ll5ycj1#
HBase本身就支持聚合操作。Coprocessors允许在区域服务器上快速高效地聚合数据,正如@Kris提到的,有一个现成的AggregationClient协处理器可以执行常见的聚合,而无需编写和部署自定义代码。
以(src)为例: