我为我的测试类启动了一个Hbase集群。我使用那个辅助类:
并使用它:
private static final HBaseClusterSingleton cluster = HBaseClusterSingleton.build(1);
我按如下方式检索配置对象:
cluster.getConf()
我在Spark上使用它如下:
sparkContext.newAPIHadoopRDD(conf, MyInputFormat.class, clazzK,
clazzV);
当我运行测试时,不需要启动Hbase集群,因为Spark将连接到我的虚拟集群。但是,当我运行我的测试方法时,它会抛出一个错误:
2015-08-26 01:19:59,558 INFO [执行任务启动 worker-0-SendThread(localhost:2181)] zookeeper.ClientCnxn (ClientCnxn.java:logStartConnect(966)) - 打开套接字连接 server localhost / 127.0.0.1:2181。不会尝试进行身份验证 使用SASL(未知错误)
2015-08-26 01:19:59,559警告[执行人 任务启动worker-0-SendThread(localhost:2181)] zookeeper.ClientCnxn (ClientCnxn.java:run(1089)) - 服务器null的会话0x0,意外 错误,关闭套接字连接并尝试重新连接 java.net.ConnectException:拒绝连接 sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) 在 org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350) 在 org.apache.zookeeper.ClientCnxn $ SendThread.run(ClientCnxn.java:1068)
不在Spark上运行的Hbase测试运行良好。当我检查日志时,我看到该集群和Spark已正确启动:
2015-08-26 01:35:21,791 INFO [main] hdfs.MiniDFSCluster (MiniDFSCluster.java:waitActive(2055)) - 群集处于活动状态
2015-08-26 01:35:40,334 INFO [main] util.Utils (Logging.scala:logInfo(59)) - 已成功启动服务 端口56941上的'sparkDriver'。
我意识到当我从命令行启动hbase时,我的Spark测试方法会连接到它!
那么,这是否意味着它不关心我传递给它的conf?关于如何解决它的任何想法?