尝试使用python中的pyhs2连接到hive错误:ModuleNotFoundError:没有名为'cloudera'的模块

时间:2017-07-07 06:47:23

标签: python-3.x hive

我正在尝试使用python从本地Windows连接到Hive:下面是我使用的代码:

no-reply@sns.amazonaws.com

并通过cmd执行该脚本:

import pyhs2 as hive
DEFAULT_DB = 'default'
DEFAULT_SERVER = '10.37.40.1'
DEFAULT_PORT = 10000
DEFAULT_DOMAIN = 'PAM01-PRD01.IBM.COM'
u = "username"
s = "password"
# Build the Hive Connection
connection = hive.connect(host=DEFAULT_SERVER, port= DEFAULT_PORT, user=u + '@' + DEFAULT_DOMAIN, password=s)
# Hive query statement
statement = "select * from user_yuti.Temp_CredCard where pir_post_dt = '2014-05-01' limit 100"
cur = connection.cursor()

# Runs a Hive query and returns the result as a list of list
cur.execute(statement)
df = cur.fetchall() 

但我收到错误 - enter image description here

有人知道这里发生了什么!!它们不是python包库中名为cloudera的包,我已经搜索过了。

2 个答案:

答案 0 :(得分:1)

很抱歉,但我只能解决这个问题的一半,因为我自己只修复了一半...

connections.py(位于Lib / site-packages / pyhs2 /中)有一个导入:

来自cloudera.thrift_sasl的

导入TSaslClientTransport

这是尝试从clouders子目录导入thrift_sasl,因此语法应该是:

来自.cloudera.thrift_sasl导入TSaslClientTransport

你可以自己进去改变它,但事实证明thrift_sasl.py正在尝试cStringIO,它在Python 3.0中已不再可用了......所以现在试着为此找到解决方法。

希望这可以帮助你。

答案 1 :(得分:1)

错误是由pyhs2中使用的import语句引起的。 Python2支持导入功能,但Python3不支持。您可以尝试使用Python2.7代替Python3(目前正在使用)。

pyhs2已不再维护多年,因此最好使用其他替代方案,例如Dropbox官方支持的PyHive