1

我正在尝试使用 pyhive 库在 python 中运行 presto 查询,但 max retries 错误即将到来。我在本地(笔记本电脑)的 jupyter notebook 中运行它。我认为它无法连接到 presto 节点。我正在使用 Azure hdinsight 集群并在头节点上安装了 presto 应用程序(使用星爆分布)。我使用了集群用户名和密码,也尝试了头节点 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): 最大重试次数超过 url: /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')

我想我在这里遗漏了一些关键的东西。请帮忙。

4

1 回答 1

0

听起来像是一个许可/认证问题。我目前在我的本地机器上使用 jupyter notebook t 使用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])
于 2020-06-24T16:52:22.903 回答