class AvgService is not shown below. Which line is #43 in TagAggregate.java ?
Please take a look at the following classes from hbase: hbase-server//src/main/java/org/apache/hadoop/hbase/coprocessor/AggregateImplementation.java hbase-server//src/test/java/org/apache/hadoop/hbase/coprocessor/TestAggregateProtocol.java Cheers On Thu, May 7, 2015 at 11:27 PM, Gupta, Kunal IN BLR STS < [email protected]> wrote: > Hi, > > I want to implement EndPoint Coprocessor. From the link ( > http://www.3pillarglobal.com/insights/hbase-coprocessors) I created my > own files as specified in the link. In the link they worked on Sum but I > want to have Average along with Filters so I did according to what they > have specified in the link and loaded coprocessor in static way. But when I > restart the HBase then in web status of master and regionserver my > coprocessor class cannot be seen. > > When I ran client code then I got an error of null pointer exception > > My client code is give below > > --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > package coprocessor; > > import java.io.IOException; > import java.util.Map; > > import org.apache.hadoop.conf.Configuration; > import org.apache.hadoop.hbase.HBaseConfiguration; > import org.apache.hadoop.hbase.client.HConnection; > import org.apache.hadoop.hbase.client.HConnectionManager; > import org.apache.hadoop.hbase.client.HTableInterface; > import org.apache.hadoop.hbase.client.coprocessor.Batch; > import org.apache.hadoop.hbase.ipc.BlockingRpcCallback; > > import com.google.protobuf.ServiceException; > > import coprocessor.generated.Avg.AvgRequest; > import coprocessor.generated.Avg.AvgResponse; > import coprocessor.generated.Avg.AvgService; > > public class TagAggregate { > public static void main(String args[]) throws IOException { > Configuration conf = HBaseConfiguration.create(); > HConnection connection = > HConnectionManager.createConnection(conf); > HTableInterface table = connection.getTable("TLG_2"); > final AvgRequest request = AvgRequest.newBuilder() > > .setFamily("TagsOnDate").setColumn("ValueFloat").build(); > > try { > Map<byte[], Long> results = > table.coprocessorService( > AvgService.class, null, null, > new Batch.Call<AvgService, Long>() > { > @Override > public Long > call(AvgService aggregate) > throws > IOException { > > > BlockingRpcCallback rpcCallback = new BlockingRpcCallback(); > > > aggregate.getAvg(null, request, rpcCallback); > > > System.out.println("rpcCallback.get() value is " +rpcCallback.get()); > AvgResponse > response =(AvgResponse) rpcCallback.get(); > > System.out.println("response.hasAvg():" +response.hasAvg()); > return (long) > (response.hasAvg() ? response.getAvg() : 0L); > } > }); > > for (Long avg : results.values()) { > System.out.println("Avg = " + avg); > } > } catch (ServiceException e) { > e.printStackTrace(); > } catch (Throwable e) { > e.printStackTrace(); > } > } > } > > Error I got after running client code > > > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > rpcCallback.get() value is null > java.lang.NullPointerException > at coprocessor.TagAggregate$1.call(TagAggregate.java:43) > at coprocessor.TagAggregate$1.call(TagAggregate.java:1) > at org.apache.hadoop.hbase.client.HTable$17.call(HTable.java:1629) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > > >
