java.lang.NoSuchMethodException: org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService.newStub(org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcChannel

刘超 7月前 ⋅ 1697 阅读   编辑

一、描述

  cdh 6.2.0  PHOENIX-5.0.0-cdh6.2.0.p0.1308267,spark用phoenixjdbc方式写入hbase,phoenix依赖如下:

<dependency>
 <groupId>org.apache.phoenix</groupId>
 <artifactId>phoenix-core</artifactId>
 <version>5.0.0-HBase-2.0</version>
</dependency>
<dependency>
 <groupId>org.apache.phoenix</groupId>
 <artifactId>phoenix-spark</artifactId>
 <version>5.0.0-HBase-2.0</version>
</dependency>
<dependency>
 <groupId>org.apache.phoenix</groupId>
 <artifactId>phoenix-server-client</artifactId>
 <version>4.7.0-HBase-1.1</version>
</dependency>

  报如下错误

二、分析

  1、先确认一下这个org.apache.phoenix.coprocessor.generated.MetaDataProtos在哪个包中,在phoenix家目录执行一下 grep -rni "org.apache.phoenix.coprocessor.generated.MetaDataProtos" . ,都在phoenix的server.jar 和 client.jar中

  2、看报错信息,是hbase回调phoenix的MetaDataService.newStub方法,如下

 

  3、hbase中有hbase-shaded-client包,把这个包,从lib目录下移走,就好了(注意不要移动/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hbase/lib/shaded-clients/目录

  4、如果还不行,有人直接把hbase/lib下的所有jar都移到spark的jars中,也解决了这个问题

  5、如果不能替换,也只能shade化了 http://apache-phoenix-user-list.1124778.n5.nabble.com/Unable-to-connect-to-HBase-using-Phoenix-JDBC-Driver-td3121.html

三、解决方法

  从hbase的lib目录删除hbase-shaded-client包试试,如果还不行,尝试把hbase/lib下的所有jar都移到spark的jars中,看看行不,如果还是不行,做shade化吧


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: