hadoop - phoenix jdbc 不工作,没有异常并卡住

标签 hadoop jdbc hbase apache-phoenix

我是 phoenix 的新手,hbase.hbase 表和 phoenix View 运行良好,我可以通过 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 服务器有公共(public)互联网 ip,所以我把这个 ip 写在那里,这有关系吗?)

它打印“开始...”并且不再有任何响应

但是当 url 是“jdbc:phoenix:ip:2181”或“jdbc:phoenix:ip:2181/hbase”时

我没有收到回复

当我添加一些其他词时,例如“jdbc:phoenix:ip:2181/balabala”

我得到空指针异常

为什么?

我希望你能明白我说的:)

最佳答案

重现你的例子,我得到一个 java.net.SocketTimeoutException 60 秒后,由 java.net.UnknownHostException: unknown host: <hostname_of_my_zk_server> 引起.但如果您赶时间(或者如果您有自定义 hbase-site.xml 客户端超时时间较长),也许这就是您所谓的“无响应”。

这个错误似乎与 this article 中解释的一样(末尾的 Zookeeper 部分):

As in our case CDH was running in a test VM, we encountered this issue: http://stackoverflow.com/questions/18428722/hbase-java-client-unknown-host-localhost-localdomain

That was worked around by adding localhost.localdomain to the existing /etc/hosts entry for cluster1, which was already pointing to the right IP address.

This answer在 SO 上总结了解决方案。

基本上,您需要在 /etc/hosts 中添加一个条目客户端:

<my_cloud_server_ip> <hostname_of_my_cloud_server_ip>

此外,您需要有一个 hbase-site.xml客户端(您可以使用服务器上的客户端作为基础)。

关于hadoop - phoenix jdbc 不工作,没有异常并卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51498170/

相关文章:

hadoop - 使用 cassandra 和 pig 进行数据清理

java - 提交或 conn.setAutoCommit(true)

hadoop - 将hdfs目录从伪分布备份到本地目录?

hadoop - hbase中disable操作有什么用?

java - HBase多表扫描作业

hadoop - hive 开始失败

python - pyspark intersection() 函数比较数据帧

hadoop - Apache-Pig,转换子组

java - Java进程退出前清理连接池

java - 为什么这个 mysql find max value 语句不能在 Java JDBC 中运行