我是phoenix和hbase的新手。hbase表和phoenix视图运行良好,并且我可以通过phoenix获取数据。当我访问jdbc到phoenix时,它卡住了。
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服务器具有公共Internet ip,所以我在那写了这个IP,重要吗?)
它显示“开始...”,并且不再响应
但是当网址为“ jdbc:phoenix:ip:2181”或“ jdbc:phoenix:ip:2181 / hbase”时
我没有回应
当我添加其他单词时,例如“ jdbc:phoenix:ip:2181 / balabala”
我得到了NULL POINTER EXCEPTION
为什么?
我希望你能理解我说的话:)
答案 0 :(得分:1)
重现您的示例,由于java.net.SocketTimeoutException
,我在60秒后收到java.net.UnknownHostException: unknown host: <hostname_of_my_zk_server>
。但是,如果您很着急(或者如果您的自定义hbase-site.xml
客户端的超时时间较大),那可能就是您所说的“无响应”。
此错误似乎类似于this article(末尾Zookeeper部分)中解释的错误:
SO上的在CDH在测试VM中运行的情况下,我们遇到了以下问题:http://stackoverflow.com/questions/18428722/hbase-java-client-unknown-host-localhost-localdomain
通过将localhost.localdomain添加到cluster1的现有/ etc / hosts条目中来解决,该条目已经指向正确的IP地址。
This answer总结了解决方案。
基本上,您需要向/etc/hosts
客户端添加条目:
<my_cloud_server_ip> <hostname_of_my_cloud_server_ip>
此外,您需要拥有hbase-site.xml
客户端(您可以在服务器上使用该客户端)。