我正在使用Azure HDInsight,并希望使用JDBC以与此处所述类似的方式连接到Thrift Server:Thrift JDBC/ODBC Server。
但它总是连接到Hive而不是Spark Thrift Server。虽然它们看起来相似但我可以查询数据,但我想利用Spark执行引擎,因为我主要使用Spark2,有时需要JDBC连接。 Spark引擎也可能比Hive / TEZ更快。
连接字符串如下所示:
jdbc:hive2://hdinsight-name.azurehdinsight.net:443/default;ssl=true?hive.server2.transport.mode=http;hive.server2.thrift.http.path=/hive2
司机尝试:
1. maven:/org.spark-project.hive:hive-jdbc:1.2.1.spark2
2. maven:/org.apache.hive:hive-jdbc
更新:看起来Spark Thrift Server不会公开:Ports used in HDInsight
答案 0 :(得分:1)
我能够通过以下解决方法从JDBC客户端连接到Spark Thrift Server。
Spark Thrift Server正在端口10002上运行,该端口不能像Azure HDInsight文档中记录的here那样公开访问。因此,这是从本地JDBC客户端连接到Spark SQL的另一种方法。
<强>背景强>
我通过SSH连接到群集头节点。
ssh user@cluster-name-ssh.azurehdinsight.net
从这里,我可以使用Beeline客户端连接到Spark Thrift Server。
beeline -u 'jdbc:hive2://localhost:10002/;transportMode=http'
使用Beeline,我可以使用Spark引擎运行SQL查询。
<强>解决方案:强>
所以我在本地机器中设置了SSH端口转发(将本地端口10002转发到集群头节点)
ssh -L 10002:localhost:10002 user@cluster-name-ssh.azurehdinsight.net
现在,我可以在JDBC客户端中使用此端口连接到Spark SQL。
jdbc:hive2://localhost:10002/;transportMode=http
这样,您就可以使用本地JDBC客户端中的Spark SQL。