繁体   English   中英

通过Java应用程序连接到Spark SQL JDBC失败

[英]Connection to Spark SQL JDBC through Java Application fails

我已经编写了一个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!");
}

我在Windows 7VMWare工作站内的Centos 7 OS上使用HDP 2.5 该代码是从Eclipse Neon, JDK 8

我可以从代码连接到同一IP上的port 10000 (对于Hive)。 另外,我试图建立从Beeline到1000010015 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)

您是否已将配置单元元数据存储在mysql中? 也许MySQL服务器绑定到本地主机。 尝试查看/etc/mysql/mysql.conf.d/mysqld.cnf ,并找到以下行:

bind-address = 127.0.0.1

删除它,然后重启mysql服务器。

我已经设法解决了,解决方案非常简单。 您需要启动Spark Thrift服务器才能完成此工作。

使用Ambari Web UI启动Spark Thrift Server:

只需转到Ambari-> Spark。 在右上角,您可以看到选项。 单击它,然后从那里启动Spark Thrift服务器。

如果您在Web UI中看不到Spark Thrift服务器,请转到SPARK_HOME / sbin并键入:

./start-thriftserver.sh --hiveconf hive.server2.thrift.port=10015

服务器启动后,请等待一两分钟,您可以成功建立JDBC连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM