You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by ch huang <ju...@gmail.com> on 2013/07/16 05:02:55 UTC
problem in running coprocessor
here is my example code , and regionserver error output. anyone can help?
public class TestMyCo {
/**
* @param args
*/
private static Configuration conf =null;
static {
conf = HBaseConfiguration.create();
conf.addResource( "hbase-site.xml");
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Configuration conf = HBaseConfiguration.create();
conf.addResource( "hbase-site.xml");
String tableName = "mytest";
final Scan scan = new Scan();
scan.addColumn("myfl".getBytes(), "myqf".getBytes());
final Filter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL,new
RegexStringComparator(".*\\.5"));
HTable table = new HTable(conf,tableName);
try{
System.out.println("start coprocessor search...");
long startTime = System.currentTimeMillis();
Map<byte[],Long> results =
table.coprocessorExec(MyTestProtocol.class, null, null,
new Batch.Call<MyTestProtocol, Long>() {
public Long call(MyTestProtocol mycheck) throws
IOException {
return mycheck.myFilter(scan, filter);
}
});
long elapsedTime = System.currentTimeMillis() - startTime;
System.out.println("table search time( 1M rows ) : "+elapsedTime+"
ms\n");
for(Map.Entry<byte[], Long> entry : results.entrySet()){
System.out.println("find : " +entry.getKey() + " : " +
entry.getValue() );
}
System.out.println("coprocessor search end");
System.out.println("scan search start....");
startTime = System.currentTimeMillis();
Filter filter2 = new ValueFilter(CompareFilter.CompareOp.EQUAL,new
RegexStringComparator(".*6$"));
Scan scan2 = new Scan();
scan2.addColumn("myfl".getBytes(), "myqf".getBytes());
scan2.setFilter(filter2);
ResultScanner rs = table.getScanner(scan2);
System.out.println("scan search end");
elapsedTime = System.currentTimeMillis() - startTime;
System.out.println("scan time( 1M rows ) : "+elapsedTime+" ms\n");
int count = 0;
for(Result res : rs){
// System.out.println(res);
count++;
}
System.out.println("find "+count+" records");
table.close();
}catch(Throwable throwable){
throwable.printStackTrace();
}
}
13/07/16 10:56:27 ERROR regionserver.HRegionServer:
org.apache.hadoop.hbase.ipc.CallerDisconnectedException: Aborting call
execCoprocessor([B@229961ae,
myFilter({"timeRange":[0,9223372036854775807],"batch":-1,"startRow":"","stopRow":"","totalColumns":1,"cacheBlocks":true,"families":{"myfl":["myqf"]},"maxVersions":1,"filter":"ValueFilter
(EQUAL, .*\\x5C.5)","caching":-1}, ValueFilter (EQUAL, .*\x5C.5)), rpc
version=1, client version=0, methodsFingerPrint=0), rpc version=1, client
version=29, methodsFingerPrint=-1368823753 from 192.168.2.166:5541 after
60126 ms, since caller disconnected
at
org.apache.hadoop.hbase.ipc.HBaseServer$Call.throwExceptionIfCallerDisconnected(HBaseServer.java:436)
at
org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextInternal(HRegion.java:3856)
at
org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextRaw(HRegion.java:3776)
at
org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.next(HRegion.java:3759)
at
org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.next(HRegion.java:3790)
at MyTestEndpoint.myFilter(MyTestEndpoint.java:33)
at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.hadoop.hbase.regionserver.HRegion.exec(HRegion.java:5482)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.execCoprocessor(HRegionServer.java:3720)
at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:320)
at
org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)
Re: problem in running coprocessor
Posted by Ted Yu <yu...@gmail.com>.
The error was about myFilter().
Can you show the method body ?
On Mon, Jul 15, 2013 at 8:02 PM, ch huang <ju...@gmail.com> wrote:
> here is my example code , and regionserver error output. anyone can help?
>
> public class TestMyCo {
> /**
> * @param args
> */
> private static Configuration conf =null;
>
> static {
> conf = HBaseConfiguration.create();
> conf.addResource( "hbase-site.xml");
>
> }
>
>
> public static void main(String[] args) throws IOException {
> // TODO Auto-generated method stub
> Configuration conf = HBaseConfiguration.create();
> conf.addResource( "hbase-site.xml");
> String tableName = "mytest";
>
> final Scan scan = new Scan();
> scan.addColumn("myfl".getBytes(), "myqf".getBytes());
> final Filter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL,new
> RegexStringComparator(".*\\.5"));
> HTable table = new HTable(conf,tableName);
> try{
> System.out.println("start coprocessor search...");
> long startTime = System.currentTimeMillis();
> Map<byte[],Long> results =
> table.coprocessorExec(MyTestProtocol.class, null, null,
> new Batch.Call<MyTestProtocol, Long>() {
> public Long call(MyTestProtocol mycheck) throws
> IOException {
> return mycheck.myFilter(scan, filter);
> }
> });
> long elapsedTime = System.currentTimeMillis() - startTime;
> System.out.println("table search time( 1M rows ) : "+elapsedTime+"
> ms\n");
> for(Map.Entry<byte[], Long> entry : results.entrySet()){
> System.out.println("find : " +entry.getKey() + " : " +
> entry.getValue() );
> }
> System.out.println("coprocessor search end");
>
>
> System.out.println("scan search start....");
> startTime = System.currentTimeMillis();
> Filter filter2 = new ValueFilter(CompareFilter.CompareOp.EQUAL,new
> RegexStringComparator(".*6$"));
> Scan scan2 = new Scan();
> scan2.addColumn("myfl".getBytes(), "myqf".getBytes());
> scan2.setFilter(filter2);
> ResultScanner rs = table.getScanner(scan2);
> System.out.println("scan search end");
> elapsedTime = System.currentTimeMillis() - startTime;
> System.out.println("scan time( 1M rows ) : "+elapsedTime+" ms\n");
> int count = 0;
> for(Result res : rs){
> // System.out.println(res);
> count++;
> }
> System.out.println("find "+count+" records");
>
> table.close();
>
> }catch(Throwable throwable){
> throwable.printStackTrace();
> }
> }
>
>
> 13/07/16 10:56:27 ERROR regionserver.HRegionServer:
> org.apache.hadoop.hbase.ipc.CallerDisconnectedException: Aborting call
> execCoprocessor([B@229961ae,
>
> myFilter({"timeRange":[0,9223372036854775807],"batch":-1,"startRow":"","stopRow":"","totalColumns":1,"cacheBlocks":true,"families":{"myfl":["myqf"]},"maxVersions":1,"filter":"ValueFilter
> (EQUAL, .*\\x5C.5)","caching":-1}, ValueFilter (EQUAL, .*\x5C.5)), rpc
> version=1, client version=0, methodsFingerPrint=0), rpc version=1, client
> version=29, methodsFingerPrint=-1368823753 from 192.168.2.166:5541 after
> 60126 ms, since caller disconnected
> at
>
> org.apache.hadoop.hbase.ipc.HBaseServer$Call.throwExceptionIfCallerDisconnected(HBaseServer.java:436)
> at
>
> org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextInternal(HRegion.java:3856)
> at
>
> org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextRaw(HRegion.java:3776)
> at
>
> org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.next(HRegion.java:3759)
> at
>
> org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.next(HRegion.java:3790)
> at MyTestEndpoint.myFilter(MyTestEndpoint.java:33)
> at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
> at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.exec(HRegion.java:5482)
> at
>
> org.apache.hadoop.hbase.regionserver.HRegionServer.execCoprocessor(HRegionServer.java:3720)
> at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
> at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
>
> org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:320)
> at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)
>