2017-06-13 125 views
0

我試圖設置一個配置單元連接,如下所述:How to Access Hive via Python?使用配置單元。與python 3.5.2(安裝在cloudera Linux BDA上)連接,但SASL包似乎會導致問題。我在論壇上看到,SASL僅與2.7 python兼容。是對的嗎?我錯過/做錯了什麼?Pyhive,SASL和Python 3.5

from pyhive import hive 
conn = hive.Connection(host="myserver", port=10000) 
import pandas as pd 

錯誤消息

TTransportException Traceback (most recent call last) 
in() 
1 from pyhive import hive 
2 #conn = hive.Connection(host="myserver", port=10000) 
----> 3 conn = hive.Connection(host="myserver") 
4 import pandas as pd 

/opt/anaconda3/lib/python3.5/site-packages/pyhive/hive.py in init(self, host, port, username, database, auth, configuration) 
102 
103 try: 
--> 104 self._transport.open() 
105 open_session_req = ttypes.TOpenSessionReq(
106 client_protocol=protocol_version, 

/opt/anaconda3/lib/python3.5/site-packages/thrift_sasl/init.py in open(self) 
70 if not ret: 
71 raise TTransportException(type=TTransportException.NOT_OPEN, 
---> **72 message=("Could not start SASL: %s" % self.sasl.getError()))** 
73 
74 # Send initial response 

TTransportException: TTransportException(message="Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found'", type=1) 

回答

0

我們(我應該說,IT-團隊)找到解決方案

升級python軟件包thrift(版本0.10.0)和PyHive(版本0.3.0)不知道爲什麼我們使用的版本不是最新版本。

添加以下內容:

<property> 
<name>hive.server2.authentication</name> 
<value>NOSASL</value> 
</property> 

要了Cloudera管理器中的以下配置單元的配置參數:

HiveServer2高級配置片段(安全閥)的蜂房的site.xml 蜂巢客戶端高級配置片段(安全閥)hive-site.xml必需,以便HUE可以工作

from pyhive import hive 
conn = hive.Connection(host="myserver", auth='NOSASL') 
import pandas as pd 
import sys 

df = pd.read_sql("SELECT * FROM my_table", conn) 
print(sys.getsizeof(df)) 
df.head() 

工作沒有問題/ er ROR。

最佳, 湯姆

+0

我的hive.server2.authentication設置爲CUSTOM,所以我需要做什麼?如何? –

+0

以下pyhive代碼:'raise NotImplementedError( 「Only only NONE,NOSASL,LDAP,KERBEROS」 「authentication is supported,got {}」。format(auth))'實際上我不知道。對不起,沒有幫助 –

0

檢查您是否已經安裝了所有的依賴:

gcc-c++ 
python-devel.x86_64 
cyrus-sasl-devel.x86_64 

(在Windows假設您選擇)

+0

我會檢查但無論如何,它是在Linux BDA,謝謝! –

+0

更多信息:安裝gcc和cyrus-sasl-devel。 python-devel以及2.6版本,因爲它是隨操作系統提供的版本,用於BDA的cloudera套件。我們並沒有使用Python系統,而是使用了由Anaconda提供的系統。 –

+0

python 3.5.2蟒蛇自定義(64位) [GCC 4.4.7 20120313(紅帽4.4.7-1)] –