1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.hadoop.hbase.coprocessor;
21
22 import java.io.IOException;
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.apache.hadoop.hbase.KeyValue;
27 import org.apache.hadoop.hbase.client.Scan;
28 import org.apache.hadoop.hbase.regionserver.InternalScanner;
29 import org.apache.hadoop.hbase.util.Bytes;
30
31
32
33
34
35 public class ColumnAggregationEndpoint extends BaseEndpointCoprocessor
36 implements ColumnAggregationProtocol {
37
38 @Override
39 public long sum(byte[] family, byte[] qualifier)
40 throws IOException {
41
42 Scan scan = new Scan();
43 scan.addColumn(family, qualifier);
44 int sumResult = 0;
45
46 InternalScanner scanner = ((RegionCoprocessorEnvironment)getEnvironment())
47 .getRegion().getScanner(scan);
48 try {
49 List<KeyValue> curVals = new ArrayList<KeyValue>();
50 boolean done = false;
51 do {
52 curVals.clear();
53 done = scanner.next(curVals);
54 KeyValue kv = curVals.get(0);
55 sumResult += Bytes.toInt(kv.getBuffer(), kv.getValueOffset());
56 } while (done);
57 } finally {
58 scanner.close();
59 }
60 return sumResult;
61 }
62 }