我成功地融入了 Hbase
变成一个 Spring
应用程序使用 HbaseTemplate
:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.hadoop.hbase.HbaseTemplate;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class ItemRepositoryImpl implements ItemRepository {
@Autowired
private HbaseTemplate hbaseTemplate;
@Override
public List<Item> findAll() {
Scan scan = new Scan();
scan.addColumn(CF, CQ);
hbaseTemplate.find("TABLE_NAME", scan, (result, rowNum) -> {
return new Item(...)
});
}
}
但是,每次运行时都会打开到hbase的连接 findAll()
(不久就关门了)。我在某个地方读到,保持连接的方法是使用 Connection
以及 Table
呼叫hbase。问题是 HbaseTemplate
使用 HConnection
以及 HTableInterface
.
我如何使用 HbaseTemplate
? 启动新连接非常耗时,我只想做一次。或者,是否有其他方法从服务器连接到hbase Spring
应用程序?
我正在使用:
org.springframework.data:spring-data-hadoop:2.5.0.RELEASE
org.apache.hbase:hbase-client:1.1.2
1条答案
按热度按时间bxgwgixi1#
我找到了两种解决这个问题的方法:
自定义hbasetemplate,扩展
HbaseAccessor
和工具HbaseOperations
最好的方法似乎是创建一个扩展HbaseAccessor
和工具HbaseOperations
以与原作相似的方式HbaseTemplate
是的,但是使用更新的api(即。Table
而不是HTableInterface
等等)在easyhbase项目中可以找到如何实现它的一个例子。
注入
Connection
而不是HbaseTemplate
另一种方法是注射Connection
去仓库做所有的重活:这个
Connection
@bean可以这样配置: