我正在尝试使用pyhive库在python中运行presto查询,但即将出现最大重试错误。我正在本地(笔记本电脑)的jupyter笔记本中运行它。我认为它无法连接到presto节点。我正在使用Azure hdinsight群集并在根节点上安装了presto应用程序(使用starburst分发)。我使用了集群用户名和密码,也尝试了头节点ssh用户名和密码,但是没有任何反应。下面是我的代码:
from pyhive import presto
conn= presto.connect(
host='clustername-ssh.azurehdinsight.net',
port=8085,
username='sshuser'
password='sshpassword',
protocol='https'
).cursor()
conn.execute('SELECT * FROM hive.default.parquettest limit 1')
我得到的错误是:
ConnectionError: HTTPConnectionPool(host ='sm-hdinsight01-ssh.azurehdinsight.net', port = 8085):网址:/ v1 / statement超出了最大重试次数(由 NewConnectionError(':无法建立新的连接:[Errno 110] 连接超时',))
但是当我在头节点的终端中运行它时,它会起作用:
from pyhive import presto
conn= presto.connect(
host='localhost',
port=8085).cursor()
conn.execute('SELECT * FROM hive.default.parquettest limit 1')
我认为我在这里错过了一些关键的事情。请帮忙。
答案 0 :(得分:0)
听起来像许可/验证问题。我当前在本地计算机上使用jupyter笔记本,请使用prestodb
库查询这样的公司presto群集。
所以基本上:
import prestodb
conn=prestodb.dbapi.connect(
host='presto.bar.foo.com',
port=80, user='foo',
password='bar'
catalog='hive',
schema='default',
)
cur = conn.cursor()
cur.execute(
'SELECT * FROM "schema"."db" limit 10')
records = cur.fetchall()
print(records[0])