无法使用JDBC连接到Spark Thrift Server,并保持使用Hive



我正在使用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。

相关内容

  • 没有找到相关文章

最新更新