pyhive,sqlalchemy无法连接到hadoop沙盒

ncgqoxb0  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(494)

我已经安装了,

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
如何连接到配置单元并轻松执行查询?

6kkfgxo0

6kkfgxo01#

使用pyhive时,身份验证不能作为 auth="NOSASL" ,而不是 "None" ,因此您的代码应如下所示:

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

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 c
for python\9.0\vc\include”
以下是对这些相同步骤的参考,以及一些附加注解和解释:http://java2developer.blogspot.co.uk/2016/08/making-impala-connection-from-python-on.html.
注意,引用的指令也执行了中的步骤(8) include 以及 win32\include 子目录,您可能也必须这样做。

相关问题