我已经安装了,
pip install thrift
pip install PyHive
pip install thrift-sasl
从那以后呢 pip install sasl
失败。我下载了sasl‑0.2.1‑cp27‑cp27m‑win\u 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()
这个错误,
无法启动sasl:sasl\u client\u start(-4)中出错sasl(-4):没有可用机制:找不到回调:2
我已经从这里下载了hortonworks沙盒,并在一个单独的服务器中使用它。
注意:我也经历了这一点,但接受的答案是不适合我,因为导入节俭Hive从Hive给导入错误,虽然我已经安装了pipHive。所以我决定使用pyhive或者sqlalchemy
如何连接到配置单元并轻松执行查询?
2条答案
按热度按时间6kkfgxo01#
使用pyhive时,身份验证不能作为
auth="NOSASL"
,而不是"None"
,因此您的代码应如下所示:kcwpcxri2#
下面是在windows上构建sasl的步骤,但您的里程可能会有所不同:这在很大程度上取决于您特定系统的路径和可用库。
还请注意,这些说明是针对Python2.7的(我看到您在问题中使用的路径)。
高级概述是您正在安装此项目:https://github.com/cyrusimap/cyrus-sasl. 为了做到这一点,您必须使用用于构建python2.7的遗留c编译器。要想让它发挥作用,还有其他几个步骤。
预构建步骤:
安装microsoft visual c编译器for python 2.7。使用默认的安装路径-注意在接下来的2个步骤中安装它的位置(下面的列表中包括2个选项)
将此文件复制到任何适合您安装的包含位置
在同一个include目录中从这个答案生成一个unistd.h文件
构建步骤:
git clone https://github.com/cyrusimap/cyrus-sasl
打开“vs2013 x64 native tools command prompt”,它是从步骤1开始随编译器安装的将directory更改为步骤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 cfor python\9.0\vc\include\stdint.h”
“%userprofile%\appdata\local\programs\common\microsoft\visual cfor python\9.0\vc\include”
以下是对这些相同步骤的参考,以及一些附加注解和解释:http://java2developer.blogspot.co.uk/2016/08/making-impala-connection-from-python-on.html.
注意,引用的指令也执行了中的步骤(8)
include
以及win32\include
子目录,您可能也必须这样做。