我最近将hbase版本从1.2.2.5.3.0-37更改为2.2.3.7.1.4.0-203。有一个代码段(hbase 1.2版的旧代码)
public List<UserRole> updateUserRoles(final List<UserRole> userRole){
return hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
public List<UserRole> doInTable(HTableInterface table) throws Throwable {
List<Put> inputBatch = createInputBatch(userRoles);
table.put(inputBatch);
return userRoles;
}
});
}
从现在起,htableinterface就被弃用了。所以我在新代码中使用了表,就像这样
public List<UserRole> updateUserRoles(final List<UserRole> userRole){
return hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
public List<UserRole> doInTable(Table table) throws Throwable {
List<Put> inputBatch = createInputBatch(userRoles);
table.put(inputBatch);
return userRoles;
}
});
}
但现在我遇到了这样的错误:“不是抽象的,并且不重写hbase中tablecallback中的抽象方法dointable(htableinterface)(属于以下两行:
hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
public List<UserRole> doInTable(Table table) throws Throwable".)
感谢您的帮助,谢谢
2条答案
按热度按时间1l5u6lss1#
你试图重写/实现这个方法
doInTable
在班上TableCallback
. 但这在更新的api中已经不存在了。muk1a3rh2#
似乎你正在使用一些你不应该(再)使用的东西。
不是抽象的,并且不重写hbase中tablecallback中的抽象方法dointable(htableinterface)
这意味着在您实现的接口中,有一个
方法。
您所做的是,在实现中将该变量的类型从htableinterface更改为table,这不匹配,这会导致您的问题。
您正在实现的接口仍然使用另一个类,可能是您没有很好地更新所有库,或者无法使用该新版本。
因此,请检查该接口是否有另一个/更新的版本,并实现它,或者您可以考虑回滚到该旧版本。