我们可以在hbase 0.98上使用0.94的客户端api运行为hbase 0.94编写的客户端程序,而不必修改或重新编译它们吗?

u5rb5r59  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(406)

hbase新手在这里试图得到一个客户机程序写在hbase 0.94.19版本与hbase 0.98.6(cdh5.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签名:http://hbase.apache.org/0.94/apidocs/org/apache/hadoop/hbase/client/increment.html#setwritetowal(布尔值)[ public Increment setWriteToWAL(boolean writeToWAL ]返回类型为增量。
0.98签名:http://archive.cloudera.com/cdh5/cdh/5/hbase/apidocs/org/apache/hadoop/hbase/client/mutation.html#setwritetowal(布尔值)[ public void setWriteToWAL(boolean write) ]
我读到hadoop1和hadoop2是二进制兼容的,但我不确定它是否也扩展到hbase。所以我可以以任何方式运行它,这样我就不必修改代码或重新编译它了吗?我想不是,但我想听听这里的Maven的意见。

g6ll5ycj

g6ll5ycj1#

api没有改变,可能有不推荐使用的方法,但大多数方法应该是相同的。但您必须根据新版本重新编译。即使我们试图避免api改变太多,您至少必须在主要版本之间重新编译。
另外,在94/96之间,在rpc和wire协议方面有一个重大的重写,所以这也是为什么不能在96+服务器上直接运行94客户机的另一个原因。

相关问题