簡體   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