0

我有一个扩展 ColumnInterpreter 的类,它旨在处理 BigDecimal 而不是 Long,它是 hbase 开箱即用的。

现在我在想,这纯粹是客户端功能,所以我想,我所要做的就是将一个新的 ColumnInterpreter 实例化为

final ColumnInterpreter<Long, Long> ci = new BigDecimalColumnInterpreter();

我在想,这会起作用,因为我没有更改聚合协议,因此我不需要创建新的端点。

但是,当我将其称为如下时会发生什么:

AggregationClient ag = new AggregationClient(config);
avg = ag.avg(Bytes.toBytes(tableName), ci, scan);

将发生以下情况:

2005 年 12 月 9 日 13:58:52 警告 client.HConnectionManager$HConnectionImplementation:执行 java.util.concurrent.ExecutionException 行时出错:org.apache.hadoop.hbase.client.RetriesExhaustedException:尝试=10 后失败,异常:星期三2012 年 9 月 5 日 13:58:12 CEST,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 9 月 5 日星期三 13:58:14 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 2012 年 9 月 5 日星期三 13:58:15 CEST,org.apache。 hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 2012 年 9 月 5 日星期三 13:58:16 CEST,org.apache.hadoop.hbase.ipc。ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:18 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java。 io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 2012 年 9 月 5 日星期三 13:58:20 CEST,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13:58:24 CEST 2012 中的错误,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:错误readFields Wed Sep 05 13:58:28 CEST 2012, org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204, java.io.IOException: IPC server cannot read call parameters: Error in readFields Wed Sep 05 13:58 :36 CEST 2012,组织。apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:52 CEST 2012,org.apache.hadoop.hbase.ipc .ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误

在 java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) 在 java.util.concurrent.FutureTask.get(FutureTask.java:111) 在 org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation .processExecs(HConnectionManager.java:1434) 在 org.apache.hadoop.hbase.client.HTable.coprocessorExec(HTable.java:1263) 在 org.apache.hadoop.hbase.client.HTable.coprocessorExec(HTable.java:1243) ) 在 helpers.HbaseReaderBigDecimal.getWeekAvgSCAN(HbaseReaderBigDecimal.java:309) 在 helpers.HbaseReaderBigDecimal.main(HbaseReaderBigDecimal.java:75) 原因:org.apache.hadoop.hbase.client.RetriesExhaustedException:尝试=10 后失败,异常: Wed Sep 05 13:58:12 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13:58:14 CEST 2012, org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204, java.io.IOException: IPC 服务器无法读取调用参数:readFields 中的错误 2012 年 9 月 5 日星期三:58:15 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 2012 年 9 月 5 日星期三 13:58:16 CEST, org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:18 CEST 2012,org.apache.hadoop.hbase .ipc.ExecRPCInvoker$1@14004204, java.io.IOException: IPC server cannot 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 服务器无法读取调用参数:readFields Wed Sep 05 13:58:24 CEST 2012 中的错误,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数: readFields Wed Sep 05 13:58:28 CEST 2012, org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204, java.io.IOException: IPC 服务器无法读取调用参数:错误 in readFields Wed Sep 05 13:58:36 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 2012 年 9 月 5 日星期三 13:58:52 CEST , org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204, java.io.IOException: IPC 服务器无法读取调用参数:readFields 中的错误hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:28 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker $1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:36 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io .IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13:58:52 CEST 2012 中的错误,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:28 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker $1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:36 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io .IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13:58:52 CEST 2012 中的错误,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:36 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java。 io.IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13:58:52 CEST 2012 中的错误,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:36 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java。 io.IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13:58:52 CEST 2012 中的错误,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误IPC 服务器无法读取调用参数:readFields 中的错误IPC 服务器无法读取调用参数:readFields 中的错误

在 org.apache.hadoop.hbase.client.ServerCallable.withRetries(ServerCallable.java:183) 在 org.apache.hadoop.hbase.ipc.ExecRPCInvoker.invoke(ExecRPCInvoker.java:79) 在 $Proxy7.getAvg(未知来源) 在 helpers.HbaseReaderBigDecimal$1.call(HbaseReaderBigDecimal.java:313) 在 helpers.HbaseReaderBigDecimal$1.call(HbaseReaderBigDecimal.java:1) 在 org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$4.call(HConnectionManager.java :1422) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 在 java.util.concurrent.FutureTask.run(FutureTask.java:166) 在 java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1110) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 在 java.lang.Thread.run(Thread.java:679) org.apache。hadoop.hbase.client.RetriesExhaustedException:尝试=10 后失败,异常:2012 年 9 月 5 日星期三 13:58:12 CEST,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13:58:14 CEST 2012 中的错误,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:错误在 readFields Wed Sep 05 13:58:15 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13 中的错误: 58:16 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:18 CEST 2012,org .apache.hadoop.hbase.ipc。ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 Wed Sep 05 13:58:20 CEST 2012,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java。 io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误 2012 年 9 月 5 日星期三 13:58:24 CEST,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields Wed Sep 05 13:58:28 CEST 2012 中的错误,org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:错误readFields Wed Sep 05 13:58:36 CEST 2012, org.apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204, java.io.IOException: IPC server cannot read call parameters: Error in readFields Wed Sep 05 13:58 :52 CEST 2012,组织。apache.hadoop.hbase.ipc.ExecRPCInvoker$1@14004204,java.io.IOException:IPC 服务器无法读取调用参数:readFields 中的错误

我的配置如下:

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");

有人对此有想法吗?

4

1 回答 1

4

您应该在服务器端部署包含您自己的 ColumnInterpreter 的 jar 文件。服务器上 HBase 的内置 EndPoint 找不到你的 ColumnInterpreter。

于 2012-11-15T03:45:44.607 回答