2014-11-25 2 views
0

HBase новичок здесь пытается получить клиентскую программу, написанную на версии HBase 0.94.19, работающую с HBase 0.98.6 (CDH 5.2). Я добавил банки HBase 0.98.6 к пути к этому пути. Я получаю эту ошибку: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Increment.setWriteToWAL(Z)Lorg/apache/hadoop/hbase/client/Increment.Можем ли мы запускать клиентские программы, написанные для HBase 0.94, используя клиентский API 0.94 на HBase 0.98 без необходимости их изменения или перекомпиляции?

Я видел подпись метода в обеих версиях, и действительно есть разница в типе возврата.

Подпись 0.94: http://hbase.apache.org/0.94/apidocs/org/apache/hadoop/hbase/client/Increment.html#setWriteToWAL(boolean) [public Increment setWriteToWAL(boolean writeToWAL] имеет тип возврата Increment.

0,98 Подпись: http://archive.cloudera.com/cdh5/cdh/5/hbase/apidocs/org/apache/hadoop/hbase/client/Mutation.html#setWriteToWAL(boolean) [public void setWriteToWAL(boolean write) ]

Я читал, что Hadoop1 и Hadoop2 двоично совместимы, но я не уверен, если это продолжается до HBase, а также. Могу ли я запустить это каким-либо образом, чтобы мне не пришлось изменять код или перекомпилировать его? Наверное, нет, но я хотел бы услышать от экспертов здесь об этом.

ответ

1

api не изменен mutch, могут быть устаревшие методы, но большинство из них должно быть одинаковым. , но вы должны перекомпилировать новую версию. Даже если мы попытаемся избежать слишком большого изменения api, вы должны хотя бы перекомпилировать основные выпуски.

Также между 94/96 произошел серьезный пересмотр в терминах rpc и wire-protocol, так что это еще одна причина, по которой вы не можете напрямую запустить клиент 94 с сервером 96+.

+0

Спасибо, да, похоже, я не могу избежать повторной компиляции. – Srikanth

Смежные вопросы