python2和python3使用pyhive


ModuleNotFoundError: No module named 'cloudera'

背景:
python3使用pyhs2連接hiveserver2

解決方法:

1、使用python2
2、python3 環境使用pyhive

1、python3 使用pyhive

sudo yum install cyrus-sasl-devel -y
sudo yum install gcc-c++  -y
pip3 install sasl
pip3 install thrift
pip3 install thrift-sasl
pip3 install pyhive

2、連接hive查詢數據

# -*- coding: utf-8 -*-
from pyhive import hive

conn = hive.Connection(host='192.168.1.72', port=10000, username='root', database='testdalu',auth="CUSTOM")#host主機ip,port:端口號,username:用戶名,database:使用的數據庫名稱,auth:使用賬戶密碼連接。
cursor=conn.cursor()
cursor.execute('select * from t_t1')#執行查詢
for result in cursor.fetchall():
     print(result)                      #將查詢結果打印出來
conn.close()

3、問題記錄

3.1、Password should be set if and only if in LDAP or CUSTOM mode;

配置auth="CUSTOM"

3.2、thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found

解決辦法:

yum install cyrus-sasl-plain  cyrus-sasl-devel  cyrus-sasl-gssapi -y

3.3、ImportError: cannot import name TFrozenDict

python2 使用pyhive

yum install -y gcc libffi-devel python-devel openssl-devel gcc-c++ cyrus-sasl-plain  cyrus-sasl-devel  cyrus-sasl-gssapi

pip install pyhive[hive]

注意這里要加上[hive]后綴,否則有些關聯的包裝不上,會導致報錯,我就遇到如下報錯信息:

ImportError: cannot import name TFrozenDict 錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM