我是phoenix和hbase的新手。hbase表和phoenix视图工作得很好,我可以通过phoenix获取数据。当我访问菲尼克斯的jdbc时,它就停止了。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Phoenix {
private static String driver = "org.apache.phoenix.jdbc.PhoenixDriver";
public static void main(String[] args) throws SQLException {
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Statement stmt = null;
ResultSet rs = null;
System.out.println("start...");
Connection con = DriverManager.getConnection("jdbc:phoenix:[my_cloud_server_ip]:2181");
System.out.println(con);
con.close();
}
}
(只有一个zookeeper服务器有公共互联网ip,所以我在那里写这个ip,这有关系吗?)
它打印“开始…”,不再有任何回应
但当url是“jdbc:phoenix:ip:2181“或”jdbc:phoenix:ip:2181/hbase“
我没有React
当我加上其他词时,例如“jdbc:phoenix:ip:2181/巴拉巴拉“
我得到空指针异常
为什么?
我希望你能理解我所说的:)
1条答案
按热度按时间yzuktlbb1#
复制你的例子,我得到一个
java.net.SocketTimeoutException
60秒后,由java.net.UnknownHostException: unknown host: <hostname_of_my_zk_server>
. 但如果你很匆忙的话(或者如果你有一个习惯的话),也许这就是你所说的“没有回应”hbase-site.xml
具有更大的超时(客户端)。这个错误似乎与本文中解释的错误类似(最后一节):
在我们的案例中,cdh是在测试vm中运行的,我们遇到了以下问题:http://stackoverflow.com/questions/18428722/hbase-java-client-unknown-host-localhost-localdomain
这是通过将localhost.localdomain添加到cluster1的现有/etc/hosts条目来解决的,该条目已经指向正确的ip地址。
这个答案总结了解决方案。
基本上,您需要在
/etc/hosts
客户端:此外,你需要有一个
hbase-site.xml
客户端(您可以使用服务器上的客户端作为基础)。