2017-02-13 82 views
0

我已經安裝了,pyhive,SQLAlchemy的無法連接到Hadoop的沙箱

pip install thrift 
pip install PyHive 
pip install thrift-sasl 

和 因爲pip install sasl失敗我下載sasl‑0.2.1‑cp27‑cp27m‑win_amd64.whl文件,並在我的Windows 8.1的PC安裝了它。

然後我寫了這個代碼,

from pyhive import hive 
cursor = hive.connect('192.168.1.232', port=10000, auth='NONE') 
cursor.execute('SELECT * from sample_07 LIMIT 5',async=True) 
print cursor.fetchall() 

這給出了錯誤:

Traceback (most recent call last): 
    File "C:/DigInEngine/scripts/UserManagementService/fd.py", line 37, in <module> 
    cursor = hive.connect('192.168.1.232', port=10000, auth = 'NONE') 
    File "C:\Python27\lib\site-packages\pyhive\hive.py", line 63, in connect 
    return Connection(*args, **kwargs) 
    File "C:\Python27\lib\site-packages\pyhive\hive.py", line 104, in __init__ 
    self._transport.open() 
    File "C:\Python27\lib\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: Unable to find a callback: 2 

這個代碼提供,

from sqlalchemy import create_engine 
engine = create_engine('hive://192.168.1.232:10000/default') 
try: 
    connection = engine.connect() 
except Exception, err: 
    print err 
result = connection.execute('select * from sample_07;') 
engine.dispose() 

這個錯誤,

Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2

我已經從here下載Hortonworks沙箱,並將其用於單獨的服務器。

注:我通過this也去了,但接受的答案是不是爲我工作,因爲從蜂巢進口ThriftHive使導入的錯誤,雖然我已經PIP安裝蜂箱。所以我決定使用pyhive或sqlalchemy

如何連接到配置單元並輕鬆執行查詢?

回答

0

下面是在Windows上構建SASL的步驟,但是您的里程可能會有所不同:其中很大一部分取決於您特定系統的路徑和可用庫。

另請注意,這些說明是特定於Python 2.7(我看你從你的問題中的路徑使用)。

高級概述是您正在安裝此項目:https://github.com/cyrusimap/cyrus-sasl。爲此,您必須使用用於構建Python 2.7的傳統C++編譯器。還有其他幾個步驟來實現這個工作。

預生成步驟:

  1. 安裝Microsoft Visual C++ Compiler for Python 2.7。使用默認安裝路徑 - 以記下它得到安裝在未來2個步驟(2個選項包含在下面的列表)
  2. 複製this file爲您安裝
  3. 做一個unistd取其包括位置是合適的。來自相同this answer .h文件包括目錄

打造步驟:

  • git clone https://github.com/cyrusimap/cyrus-sasl
  • 打開所安裝的與所述 「VS2013 x64的本機工具命令提示」編譯器從步驟1
  • 將目錄切換到由步驟4創建的目錄,然後lib子目錄
  • nmake /f ntmakefile STATIC=no prefix=C:\sasl64
  • nmake /f ntmakefile prefix=C:\sasl64 STATIC=no install參見下面的註釋
  • copy /B C:\sasl64\lib\libsasl.lib /B C:\sasl64\lib\sasl2.lib
  • pip install thrift_sasl --global-option=build_ext \ --global-option=-IC:\\sasl64\\include \ --global-option=-LC:\\sasl64\\lib
  • '包含' 地點:

    • 「C:\ Program Files文件(x86)的\ Common Files文件\ Microsoft \ Visual C++ for Python \ 9.0 \ VC \ include \ stdint.h「
    • 「%USERPROFILE%\應用程序數據\本地\程序\ COMMON \微軟\的Visual C++爲Python \ 9.0 \ VC \包括」

    下面是這些相同的步驟參考,使用一些額外的註釋和解釋:http://java2developer.blogspot.co.uk/2016/08/making-impala-connection-from-python-on.html

    引用的指令也執行步驟(8)在includewin32\include子目錄,你可能需要做這一點。

    +0

    感謝您的明確答案和您的時間。我會嘗試這一點,並接受如果工作的答案。 :) –

    +0

    但錯誤說無法啓動SASL。它不說沒有它..無論如何,我會嘗試你所說的 –