hadoop 为什么HBase中不能进行聚合?

edqdpe6u  于 2022-11-01  发布在  Hadoop
关注(0)|答案(1)|浏览(186)

我想知道为什么HBase本身不支持SUM / AVG这样的聚合操作。我知道有几个解决方法可以实现同样的操作,但是尽管有这些解决方法,为什么HBase本身不提供它。更重要的是,请解释为什么不能执行这些与HBase所使用的键-值数据结构及其背后的查询逻辑有关的操作。

g6ll5ycj

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);

相关问题