无法使用jdbc连接到spark thrift服务器,继续使用配置单元

3yhwsihp  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(580)

我使用的是azurehdinsight,并希望使用jdbc以类似的方式连接到thrift服务器:thrift jdbc/odbc服务器。
不过,它总是连接到Hive,而不是spark thrift服务器。虽然它们看起来很相似,而且我可以查询数据,但我想利用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没有公开:hdinsight中使用的端口

a14dhokn

a14dhokn1#

我能够通过以下解决方法从jdbc客户端连接到spark thrift服务器。
spark thrift服务器正在端口10002上运行,如azure hdinsight文档中所述,该端口不可公开访问。因此,这里是从本地jdbc客户机连接到sparksql的另一种方法。
背景:
我通过ssh连接到集群头节点。

ssh user@cluster-name-ssh.azurehdinsight.net

从这里,我可以使用beeline客户端连接到spark-thrift服务器。

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客户机中使用这个端口来连接sparksql。

jdbc:hive2://localhost:10002/;transportMode=http

这样,就可以从本地jdbc客户机使用sparksql。

相关问题