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



我编写了一个Java应用程序,使用Spark SQL对基于hive的数据库执行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 7 VMWare工作站内的Centos 7 OS上使用HDP 2.5。该代码正在从 Eclipse Neon 运行,JDK 8

我能够从代码连接到同一 IP 上的port 10000(对于 Hive)。此外,我尝试将 JDBC 从 Beeline 连接到 1000010015,并且它们都可以正常工作。直线语法为:

!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)

我已经设法解决了它,解决方案相当简单。您需要启动Spark Thrift Servers才能完成此操作。

使用 Ambari Web UI 启动 Spark Thrift Server:

只需前往安巴里->火花。在右上角,您可以看到选项。单击它并从那里启动Spark Thrift服务器。

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

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

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

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

bind-address = 127.0.0.1

删除它,然后重新启动 MySQL 服务器。

相关内容

  • 没有找到相关文章

最新更新