无法使用 JDBC 连接到 Spark Thrift 服务器,继续使用 Hive
Can not connect to Spark Thrift Server using JDBC, keeps using Hive
我正在使用 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 服务器未暴露给 public:Ports used in HDInsight
我能够通过以下解决方法从 JDBC 客户端连接到 Spark Thrift 服务器。
Spark Thrift 服务器 运行 正在端口 10002 上运行,如 Azure HDInsight 文档中记录的 here 所述,该端口不可公开访问。因此,这是从本地 JDBC 客户端连接到 Spark SQL 的替代方法。
背景:
我通过 SSH 连接到簇头节点。
ssh user@cluster-name-ssh.azurehdinsight.net
从这里,我能够使用 Beeline 客户端连接到 Spark Thrift 服务器。
beeline -u 'jdbc:hive2://localhost:10002/;transportMode=http'
借助 Beeline,我可以 运行 SQL 使用 Spark 引擎进行查询。
解法:
所以我在本地机器上设置了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。
我正在使用 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 服务器未暴露给 public:Ports used in HDInsight
我能够通过以下解决方法从 JDBC 客户端连接到 Spark Thrift 服务器。
Spark Thrift 服务器 运行 正在端口 10002 上运行,如 Azure HDInsight 文档中记录的 here 所述,该端口不可公开访问。因此,这是从本地 JDBC 客户端连接到 Spark SQL 的替代方法。
背景:
我通过 SSH 连接到簇头节点。
ssh user@cluster-name-ssh.azurehdinsight.net
从这里,我能够使用 Beeline 客户端连接到 Spark Thrift 服务器。
beeline -u 'jdbc:hive2://localhost:10002/;transportMode=http'
借助 Beeline,我可以 运行 SQL 使用 Spark 引擎进行查询。
解法:
所以我在本地机器上设置了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。