2017-11-16 17 views
0

이 질문은 일반적으로 많이 사용되는데 여기에는 여러 가지가 있습니다. 이 시나리오에서는 필자가 Impyla 라이브러리를 사용하여 파이썬에서 작동하는 인증 (NOSASL)이없는 HiveServer2를 설정합니다. Beeline을 사용하여 연결할 때 작동하는 연결을 얻을 수있는 방법이 없습니다.Beeline이 NOSASL 인증 모드 (이전 클라이언트)로 HiveServe2에 연결할 수 없습니다.

최단 거리가 끝납니다 : HiveServer2 로그에서

beeline> !connect jdbc:hive2://127.0.0.1:10000/default/hive 
Error: Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default/hive: null (state=08S01,code=0) 

내가 가진 :

17/11/16 20:59:35 [HiveServer2-Handler-Pool: Thread-34]: ERROR server.TThreadPoolServer: Thrift error occurred during processing of message. 
org.apache.thrift.protocol.TProtocolException: Missing version in readMessageBegin, old client? 
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:228) 
    at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27) 
    at org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56) 
    at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:285) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    at java.lang.Thread.run(Thread.java:748) 

어떤 아이디어가?

답변

1

마지막으로 해결책을 찾았습니다.

!connect jdbc:hive2://127.0.0.1:10000/default/;auth=noSasl 

이것을 사용하여 HiveServer2에 연결할 수 있습니다. 또한 개발을 위해 HiveServer2를 사용하고 있으므로 루트 아래 프로세스를 시작했으며 모든 파일 시스템 트리는 루트에 속합니다. 직선을 사용하여 HiveServer2에 로그인 할 때 때문에이 옵션에, 나는 루트 사용자를 사용해야합니다 :에는 인증이 전혀 없기 때문에

Connecting to jdbc:hive2://127.0.0.1:10000/default/;auth=noSasl 
Enter username for jdbc:hive2://127.0.0.1:10000/default/;auth=noSasl: root 
Enter password for jdbc:hive2://127.0.0.1:10000/default/;auth=noSasl: 
Connected to: Apache Hive (version 1.2.2) 

내가 암호를 제공 할 필요가 없었다. 이제 데이터베이스와 테이블을 만들 수 있습니다.

이 "​Comparing Beeline to the Hive CLI"은이 문제를 해결하기위한 유효한 참조가되었습니다.