我编写了一个Java应用程序,使用Spark SQL在基于配置单元的数据库上执行SQL查询。但是,从我的Java应用程序通过JDBC连接到Spark SQL会给出连接被拒绝错误。我写的代码片段如下:
public static void main(String args[]) {
Class.forName("org.apache.hive.jdbc.HiveDriver");
conn = DriverManager.getConnection("jdbc:hive2://<ip>:10015/default","","");
System.out.println("Connected!");
}
我在HDP 2.5
上的Centos 7 OS
工作站内的VMWare
上使用Windows 7
。代码正在从Eclipse Neon JDK 8
运行。
我可以从代码连接到同一IP上的port 10000
(用于Hive)。此外,我尝试从直线到10000
和10015
建立JDBC连接,并且它们都正常工作。直线语法是:
!connect jdbc:hive2://127.0.0.1:10015
Java代码的堆栈跟踪是:
1300 [main] INFO org.apache.hive.jdbc.HiveConnection - Could not open client transport with JDBC Uri: jdbc:hive2://192.168.225.128:10015/default
java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://192.168.225.128:10015/default: java.net.ConnectException: Connection refused: connect
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:215)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:163)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
答案 0 :(得分:0)
您是否已将hive元数据存储在mysql中?也许mysql服务器绑定到localhost。尝试查看/etc/mysql/mysql.conf.d/mysqld.cnf
,然后找到以下行:
bind-address = 127.0.0.1
将其删除,然后重启mysql服务器。
答案 1 :(得分:0)
我已经设法解决了,解决方案非常简单。您需要启动Spark Thrift Servers才能使其正常工作。
去Ambari - &gt;火花。在右上角,您可以看到选项。单击它并从那里启动Spark Thrift Servers。
如果您在Web UI中没有看到Spark Thrift Servers,请转到SPARK_HOME / sbin并输入:
./start-thriftserver.sh --hiveconf hive.server2.thrift.port=10015
服务器启动后等待一两分钟,您就可以成功建立JDBC连接。