phoenix jdbc不起作用,没有异常并且卡住了

时间:2018-07-24 12:04:38

标签: hadoop jdbc hbase phoenix

我是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

为什么?

我希望你能理解我说的话:)

1 个答案:

答案 0 :(得分:1)

重现您的示例,由于java.net.SocketTimeoutException,我在60秒后收到java.net.UnknownHostException: unknown host: <hostname_of_my_zk_server>。但是,如果您很着急(或者如果您的自定义hbase-site.xml客户端的超时时间较大),那可能就是您所说的“无响应”。

此错误似乎类似于this article(末尾Zookeeper部分)中解释的错误:

  

在CDH在测试VM中运行的情况下,我们遇到了以下问题:http://stackoverflow.com/questions/18428722/hbase-java-client-unknown-host-localhost-localdomain

     

通过将localhost.localdomain添加到cluster1的现有/ etc / hosts条目中来解决,该条目已经指向正确的IP地址。

SO上的

This answer总结了解决方案。

基本上,您需要向/etc/hosts客户端添加条目:

<my_cloud_server_ip> <hostname_of_my_cloud_server_ip>

此外,您需要拥有hbase-site.xml客户端(您可以在服务器上使用该客户端)。