【问题标题】:Can not connect to Spark Thrift Server using JDBC, keeps using Hive无法使用 JDBC 连接到 Spark Thrift 服务器,继续使用 Hive
【发布时间】:2017-09-08 10:11:15
【问题描述】:

我正在使用 Azure HDInsight,并希望使用 JDBC 连接到 Thrift Server,方式与此处所述类似:Thrift JDBC/ODBC Server

但是它总是连接到 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 似乎未公开:Ports used in HDInsight

【问题讨论】:

    标签: hive apache-spark-sql azure-hdinsight


    【解决方案1】:

    我能够通过以下解决方法从 JDBC 客户端连接到 Spark Thrift 服务器。

    Spark Thrift 服务器在端口 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。

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多