HBase0.98.1 通过协调器进行表的行数统计

时间:2021-04-16 15:06:20

1. 启用表aggregation,只对特定的表生效。通过HBase Shell 来实现

(1)disable指定表。hbase> disable 'student'

(2)添加aggregation hbase> alter 'student', METHOD => 'table_att','coprocessor'=>'|org.apache.hadoop.hbase.coprocessor.AggregateImplementation||'

(3)重启指定表 hbase> enable 'student'

2. Eclipse Code

  

package com.sc.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.coprocessor.AggregationClient;
import org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter;
import org.apache.hadoop.hbase.util.Bytes;

public class HbaseTest {

private static final byte[] TABLE_NAME = Bytes.toBytes("student");
private static final byte[] CF = Bytes.toBytes("info");

public static void main(String[] args) {

Configuration configuration = HBaseConfiguration.create();
LongColumnInterpreter columnInterpreter = new LongColumnInterpreter();
AggregationClient aggregationClient = new AggregationClient(configuration);
Scan scan = new Scan();
// 指定扫描列族,唯一值
scan.addFamily(CF);
long rowCount;
try {
  rowCount = aggregationClient.rowCount(TableName.valueOf(TABLE_NAME), columnInterpreter, scan);
  System.out.println("row count is " + rowCount);
} catch (Throwable e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

}

}