我正在尝试使用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()
有人知道这里发生了什么!!它们不是python包库中名为cloudera的包,我已经搜索过了。
答案 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
。