package com.embracesource.edh.hbase; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.coprocessor.GroupByClient; import org.apache.hadoop.hbase.expression.Expression; import org.apache.hadoop.hbase.expression.ExpressionFactory; import org.apache.hadoop.hbase.expression.evaluation.EvaluationResult; import org.apache.hadoop.hbase.util.Bytes; public class GroupByTest { public static void main(String[] args) { Configuration conf = HBaseConfiguration.create(); conf.setInt("hbase.client.retries.number", 1); conf.setInt("ipc.client.connect.max.retries", 1); byte[] table = Bytes.toBytes("t"); try { GroupByClient groupByClient = new GroupByClient(conf); Scan[] scans = { new Scan() }; List<Expression> groupByExpresstions = new ArrayList<Expression>(); List<Expression> selectExpresstions = new ArrayList<Expression>(); groupByExpresstions.add(ExpressionFactory.columnValue( "f", "id")); selectExpresstions.add(ExpressionFactory .groupByKey(ExpressionFactory.columnValue( "f", "id"))); List<EvaluationResult[]> groupByResultList = groupByClient .groupBy(table, scans, groupByExpresstions, selectExpresstions, null); for (EvaluationResult[] res : groupByResultList) { String resultString = ""; for (int i = 0; i < res.length; i++) { EvaluationResult er = res[i]; resultString += "\t\t" + er.toString(); if (0 == ((i + 1) % selectExpresstions.size())) { System.out.println(resultString); resultString = ""; } } } } catch (Throwable e) { e.printStackTrace(); } } }