2017-09-08 3 views
1

Azure HDInsight를 사용 중이며 여기에 설명 된 것과 유사한 방식으로 JDBC를 사용하여 Thrift Server에 연결하려고합니다 : Thrift JDBC/ODBC Server.JDBC를 사용하여 Spark Thrift Server에 연결할 수 없습니다. Hive를 계속 사용하십시오.

그러나 항상 Hive에 연결되며 Spark Thrift Server에는 연결되지 않습니다. 둘 다 비슷하게 보이고 데이터를 쿼리 할 수 ​​있지만 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 

업데이트 : 불꽃 드리프트 서버처럼 보이는 것은 대중에 노출되지 않습니다 Ports used in HDInsight

답변

1

내가 연결할 수 있었다 다음 해결 방법을 사용하여 JDBC 클라이언트에서 Thrift Server에 연결하십시오.

스파크 스 리프트 서버는 Azure HDInsight 문서에 설명 된대로 here으로 공개적으로 액세스 할 수없는 포트 10002에서 실행됩니다. 따라서 로컬 JDBC 클라이언트에서 Spark SQL에 연결하는 다른 방법이 있습니다.

배경 : 나는 SSH를 통해 헤드 노드 클러스터에 연결

.

ssh [email protected] 

여기에서 Beeline 클라이언트를 사용하여 Spark Thrift Server에 연결할 수있었습니다.

beeline -u 'jdbc:hive2://localhost:10002/;transportMode=http' 

Beeline을 사용하면 Spark 엔진을 사용하여 SQL 쿼리를 실행할 수 있습니다. 솔루션

:

그래서 나는 내가 JDBC 클라이언트에서이 포트를 사용할 수 있습니다, 지금

ssh -L 10002:localhost:10002 [email protected] 

을 (헤드 노드 클러스터 앞으로 로컬 포트 ​​10002) 내 로컬 컴퓨터에 SSH 포트 포워딩을 설정 Spark SQL에 연결합니다.

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

이렇게하면 로컬 JDBC 클라이언트의 Spark SQL을 사용할 수 있습니다.