我们是否可以使用0.94'运行为HBase 0.94编写的客户端程序;在HBase 0.98上安装客户端API,而无需修改或重新编译它们?

我们是否可以使用0.94'运行为HBase 0.94编写的客户端程序;在HBase 0.98上安装客户端API,而无需修改或重新编译它们?,hbase,cloudera-cdh,Hbase,Cloudera Cdh,HBase新手在这里尝试获得一个在HBase 0.94.19版本上编写的客户端程序,该版本使用HBase 0.98.6(CDH 5.2)。我已将HBase 0.98.6的JAR添加到此客户端的类路径。我得到了这个错误:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.Increment.setWriteToWAL(Z)Lorg/apache/hadoop/hbase/client/Increment 我在两个版本中都看到了方法签

HBase新手在这里尝试获得一个在HBase 0.94.19版本上编写的客户端程序,该版本使用HBase 0.98.6(CDH 5.2)。我已将HBase 0.98.6的JAR添加到此客户端的类路径。我得到了这个错误:
java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.Increment.setWriteToWAL(Z)Lorg/apache/hadoop/hbase/client/Increment

我在两个版本中都看到了方法签名,返回类型确实有所不同

0.94的签名:[
public Increment setWriteToWAL(boolean writeToWAL
]的返回类型为Increment

0.98的签名:[
public void setWriteToWAL(布尔写)
]


我读到Hadoop1和Hadoop2是二进制兼容的,但我不确定这是否也扩展到了HBase。所以我可以以任何方式运行它,这样我就不必修改代码或重新编译它了吗?我想不会,但我想听听这里的专家在这方面的意见。

api没有更改mutch,可能有不推荐的方法,但大多数都应该我也一样。 但是你必须根据新版本重新编译。即使我们试图避免api改变太多,你至少必须在主要版本之间重新编译


此外,在94/96年期间,在rpc和wire协议方面进行了一次重大重写,因此,这也是您无法针对96+服务器直接运行94客户端的另一个原因。

谢谢,是的,看起来我无法逃避重新编译。