I have a Class extending ColumnInterpreter, that is meant to handle BigDecimal instead of Long, which hbase provides out of the box.
Now I was thinking, that this was purely client functionality, so I figured, that all, I’d have to do is instantiate a new ColumnInterpreter as
final ColumnInterpreter<Long, Long> ci = new BigDecimalColumnInterpreter();
I was thinking, that this would just work, as I didn’t change the Aggregateprotocol, and that therefor I would not need to create a new Endpoint.
However what happens, when I call it as follows:
AggregationClient ag = new AggregationClient(config);
avg = ag.avg(Bytes.toBytes(tableName), ci, scan);
The following will happen:
12/09/05 13:58:52 WARN
client.HConnectionManager$HConnectionImplementation: Error executing
for row java.util.concurrent.ExecutionException:
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after
attempts=10, exceptions: Wed Sep 05 13:58:12 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:14 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:15 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:16 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:18 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:20 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:24 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:28 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:36 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:52 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFieldsat java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111) at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processExecs(HConnectionManager.java:1434)
at
org.apache.hadoop.hbase.client.HTable.coprocessorExec(HTable.java:1263)
at
org.apache.hadoop.hbase.client.HTable.coprocessorExec(HTable.java:1243)
at
helpers.HbaseReaderBigDecimal.getWeekAvgSCAN(HbaseReaderBigDecimal.java:309)
at helpers.HbaseReaderBigDecimal.main(HbaseReaderBigDecimal.java:75)
Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedException:
Failed after attempts=10, exceptions: Wed Sep 05 13:58:12 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:14 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:15 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:16 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:18 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:20 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:24 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:28 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:36 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:52 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFieldsat
org.apache.hadoop.hbase.client.ServerCallable.withRetries(ServerCallable.java:183)
at
org.apache.hadoop.hbase.ipc.ExecRPCInvoker.invoke(ExecRPCInvoker.java:79)
at $Proxy7.getAvg(Unknown Source) at
helpers.HbaseReaderBigDecimal$1.call(HbaseReaderBigDecimal.java:313)
at helpers.HbaseReaderBigDecimal$1.call(HbaseReaderBigDecimal.java:1)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$4.call(HConnectionManager.java:1422)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166) at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after
attempts=10, exceptions: Wed Sep 05 13:58:12 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:14 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:15 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:16 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:18 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:20 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:24 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:28 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:36 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields Wed Sep 05 13:58:52 CEST 2012,
org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,
java.io.IOException: IPC server unable to read call parameters: Error
in readFields
My config is as follows:
config = HBaseConfiguration.create();
config.set(zookeeper, ip);
config.setLong("hbase.client.scanner.caching", 1000);
config.set("hbase.coprocessor.region.classes", "org.apache.hadoop.hbase.coprocessor.AggregateImplementation");
Does anyone have an idea on this?
You should deploy the jar file containing your own ColumnInterpreter on the server side. The built-in EndPoint of HBase on the server cannot find your ColumnInterpreter.