我正在使用Azure HDinsight,并希望以类似的方式使用JDBC连接到Thrift Server:Thrift JDBC/ODBC服务器。
但是,它总是连接到Hive而不是Spark Thrift服务器。尽管它们俩看起来都相似,并且可以查询数据,但我想利用Spark Execution引擎,因为我主要使用Spark2,有时需要JDBC连接。火花发动机也可能比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服务器不暴露于公共场所:Hdinsight中使用的端口
我能够连接到JDBC客户端的Spark Thrift Server。
Spark Thrift Server在端口10002上运行,该端口无法公开访问,如Azure Hdinsight文档中所记录的。因此,这是从本地JDBC客户端连接到Spark SQL的替代方法。
背景:
i通过SSH连接到群集头节点。
ssh user@cluster-name-ssh.azurehdinsight.net
从这里,我能够使用Beeline客户端连接到Spark Thrift服务器。
beeline -u 'jdbc:hive2://localhost:10002/;transportMode=http'
使用Beeline,我可以使用Spark Engine运行SQL查询。
解决方案:
所以我在本地计算机(向前局部端口10002到cluster head Node)设置了SSH端口转发
ssh -L 10002:localhost:10002 user@cluster-name-ssh.azurehdinsight.net
现在,我可以在JDBC客户端中使用此端口来连接到Spark SQL。
jdbc:hive2://localhost:10002/;transportMode=http
这样,您可以从本地JDBC客户端使用Spark SQL。