본문 바로가기
python

[pyhive] pyhive에서 커버로스 인증을 사용할 때 no mechanism available: No worthy mechs found 오류

by hs_seo 2023. 8. 19.

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 

 

cyrus-sasl2 package : Ubuntu

 

launchpad.net

 

설치 후 테스트 코드는 다음과 같습니다.

 

 

추가 확인 사항

이 방법은 hiveserver2의 transport mode 가 http 일 때 동작합니다. hiveserver2의 모드가 binary 일 때도 이와 동일한 오류가 발생합니다. 따라서 이 설정을 추가 하기 전에 hiveserver2의 설정을 확인해야 합니다.

 

    <property>
        <name>hive.server2.transport.mode</name>
        <value>http</value>
    </property>
반응형