HBase自定义Observer协处理器报错“ cannot be cast to org.apache.hadoop.hbase.client.HTable Cause:”

编程入门 行业动态 更新时间:2024-10-14 02:23:50

HBase<a href=https://www.elefans.com/category/jswz/34/1771438.html style=自定义Observer协处理器报错“ cannot be cast to org.apache.hadoop.hbase.client.HTable Cause:”"/>

HBase自定义Observer协处理器报错“ cannot be cast to org.apache.hadoop.hbase.client.HTable Cause:”

HBase自定义Observer协处理器在向其中一张表插入数据时,将数据保存到另一张表,执行逻辑报错如下

2021-11-30 14:28:13,884 ERROR [RpcServer.FifoWFPBQ.default.handler=29,queue=2,port=16000] master.MasterRpcServices: Region server linux121,16020,1638253313319 reported a fatal error:
ABORTING region server xxx,16020,1638253313319: The coprocessor com.wufabao.processor.MyProcessor threw java.lang.ClassCastException: org.apache.hadoop.hbase.client.HTableWrapper cannot be cast to org.apache.hadoop.hbase.client.HTable
Cause:
java.lang.ClassCastException: org.apache.hadoop.hbase.client.HTableWrapper cannot be cast to org.apache.hadoop.hbase.client.HTableat com.wufabao.processor.MyProcessor.prePut(MyProcessor.java:27)at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$30.call(RegionCoprocessorHost.java:918)at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1673)at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1749)at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1705)at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.prePut(RegionCoprocessorHost.java:914)at org.apache.hadoop.hbase.regionserver.HRegion.doPreMutationHook(HRegion.java:2997)at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2972)at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2918)at org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:823)at org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:785)at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2239)at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:34958)at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2339)at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:123)at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:188)at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:168)

原因

HTable tb1 = (HTable) e.getEnvironment().getTable(TableName.valueOf(“t2”));
原因是“=”后面返回的数据类型是HTableInterface,无法强制转换为HTable类型,因此报错,但是在IDE中提示HTableInterface已经过期,不建议把“=”左边的数据类型修改为HTableInterface类型

解决方案一

把“=”左边的数据类型改成HTableInterface继承的Table类型,经测试可以使用
Table t2 = e.getEnvironment().getTable(TableName.valueOf(“t2”));

解决方案二

不使用中间变量,直接获取到某张表的对象直接给该对象赋值
原代码:

HTable tb1 = (HTable) e.getEnvironment().getTable(TableName.valueOf("t2"));
tb1.put(put1);

现代码:
e.getEnvironment().getTable(TableName.valueOf("t2")).put(put1);

更多推荐

HBase自定义Observer协处理器报错“ cannot be cast to org.apache.hadoop.hbase.client.HTable

本文发布于:2024-03-23 22:20:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743506.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   报错   处理器   cast   Observer

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!