首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建连接到HBaseAdmin的HBaseTestingUtility

创建连接到HBaseAdmin的HBaseTestingUtility
EN

Stack Overflow用户
提问于 2013-11-21 10:42:58
回答 1查看 1K关注 0票数 0

我正在编写一个代码来操作存储在HBase中的数据。我还想为这段代码编写一个测试。我希望在我的测试中使用HBaseTestingUtility,因此,在我的@BeforeClass中,我创建了HBaseTestingUtility的新实例,并启动了迷你集群:

代码语言:javascript
复制
    @BeforeClass
public static void setUpClass() throws Exception {
    utility = new HBaseTestingUtility();
    utility.startMiniCluster();
}

效果很好。但是,我无法连接到正在测试的代码中的这个嵌入式集群。在我的代码中:

代码语言:javascript
复制
Configuration config = HBaseConfiguration.create();

try (HBaseAdmin admin = new HBaseAdmin(config))
{
   //code which manipulates the data
}

不幸的是,当创建新的HBaseAdmin时,我得到了一个ConnectionError异常:

2013-11-21 11:20:35,778 WARN main-SendThread(0:0:0:0:0:0:1:2181) zookeeper.ClientCnxn (ClientCnxn.java:run(1089)) -会话0x0用于服务器空,意外错误,关闭套接字连接并尝试重新连接java.net.ConnectException:连接被拒绝:在org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)的sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:692)上没有进一步的信息

当我尝试另一个分摊来创建HBaseAdmin时:

代码语言:javascript
复制
try (HBaseAdmin admin = new HBaseAdmin(HBaseCacheTest.utility.getConfiguration()))
{
   //code which manipulates the data
}

它可以工作(请注意,这里我通过HBaseCacheTest.utility访问HBaseTestingUtility实例)。显然,这不是一个很好的方法,因为我不希望有一个依赖于测试代码的生产代码。

我在这里看到的一种方法是在我的产品类中设置配置并在测试中使用此setter方法。但是,我认为应该有另一种方式来连接到用HBaseTestingUtility创建的嵌入式迷你集群。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-01-15 12:44:08

不应创建新的配置对象,而应使用HBaseTestingUtility提供的配置对象:

代码语言:javascript
复制
HBaseAdmin admin = testingUtility.getHBaseAdmin();

此外,如果您只需要配置,则可以使用此配置:

代码语言:javascript
复制
testingUtility.getConfiguration()

只是在我的UT重新检查了一下。我使用的是HBase 0.96-hadoop2 2

希望这会有所帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20118705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档