[英]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 7
的VMWare
工作站內的Centos 7 OS
上使用HDP 2.5
。 該代碼是從Eclipse Neon, JDK 8
。
我可以從代碼連接到同一IP上的port 10000
(對於Hive)。 另外,我試圖建立從Beeline到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)
您是否已將配置單元元數據存儲在mysql中? 也許MySQL服務器綁定到本地主機。 嘗試查看/etc/mysql/mysql.conf.d/mysqld.cnf
,並找到以下行:
bind-address = 127.0.0.1
刪除它,然后重啟mysql服務器。
我已經設法解決了,解決方案非常簡單。 您需要啟動Spark Thrift服務器才能完成此工作。
只需轉到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.