PyHive에서 커버로스 인증을 사용할 때 다음과 같은 오류가 발생 하였습니다.
File "/usr/local/lib/python3.6/site-packages/thrift_sasl/__init__.py", line 72, in open
message=("Could not start SASL: %s" % self.sasl.getError()))
thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found
이 오류는 cyrus-sasl 라이브러리가 설치 되어 있지 않을 때 발생합니다.
우분투 기준으로 다음과 같이 라이브러리를 설치 하였습니다.
apt-get install -y
cyrus-sasl2-doc \
libsasl2-2 \
libsasl2-dev \
libsasl2-modules \
libsasl2-modules-gssapi-mit \
libsasl2-modules-db \
libsasl2-modules-ldap \
libsasl2-modules-otp \
libsasl2-modules-sql \
sasl2-bin \
libkrb5-dev
라이브러리 설치 후에는 정상 동작 하였습니다.
설치 시 주의 할 점은 libsasl2-modules-gssapi-mit, libsasl2-modules-gssapi-heimdal 라이브러리는 동시에 설치가 안됩니다. Conflict 오류가 발생하기 때문에 하나만 설치 하셔도 됩니다.
https://launchpad.net/ubuntu/+source/cyrus-sasl2
설치 후 테스트 코드는 다음과 같습니다.
추가 확인 사항
이 방법은 hiveserver2의 transport mode 가 http 일 때 동작합니다. hiveserver2의 모드가 binary 일 때도 이와 동일한 오류가 발생합니다. 따라서 이 설정을 추가 하기 전에 hiveserver2의 설정을 확인해야 합니다.
<property>
<name>hive.server2.transport.mode</name>
<value>http</value>
</property>
반응형