您的位置:首页 > 运维架构 > Apache

org.apache.hadoop.hbase.coprocessor.AggregateImplementation 来统计表的行数

2015-04-24 20:58 826 查看
多谢楼主的分享!

转载自:http://blog.csdn.net/xiao_jun_0820/article/details/25413919

hbase自带了一个聚合coprocessor类:org.apache.hadoop.hbase.coprocessor.AggregateImplementation。使用该类可以count一张表的总记录数。

当然在hbase shell下面也可以count <table_name>来统计。我这里比较了一下两者的执行时间,我有一张表有700多万的数据,在hbase shell下count足足花费了我12分钟的时间,而用coprocessor来统计,只花费了78秒!!!由此可见coprocessor的强大。

hbase aip 添加协处理器:

[java] view
plaincopy





Configuration hbaseconfig = HBaseConfiguration.create();

HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseconfig);

hbaseAdmin.disableTable(TABLE_NAME);

HTableDescriptor htd = hbaseAdmin.getTableDescriptor(TABLE_NAME);

htd.addCoprocessor(AggregateImplementation.class.getName());

hbaseAdmin.modifyTable(TABLE_NAME, htd);

hbaseAdmin.enableTable(TABLE_NAME);

hbaseAdmin.close();

使用hbase提供的聚合coprocessor:

[java] view
plaincopy





AggregationClient aggregationClient = new AggregationClient(hbaseconfig);

Scan scan = new Scan();

scan.addFamily(Bytes.toBytes("fr"));

Date start = new Date();

long rowcount = aggregationClient.rowCount(TABLE_NAME,

new LongColumnInterpreter(), scan);

Date end = new Date();

System.out.println("rowcount:" + rowcount);

System.out.println("timecost:" + (end.getTime() - start.getTime()));

hbase shell添加coprocessor:

disable 'member'

alter 'member',METHOD => 'table_att','coprocessor' => 'hdfs://master24:9000/user/hadoop/jars/test.jar|mycoprocessor.SampleCoprocessor|1001|'

enable 'member'

hbase shell 删除coprocessor:

disable 'member'

alter 'member',METHOD => 'table_att_unset',NAME =>'coprocessor$1'

enable 'member'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐