如何使用pyhive在python中运行presto查询?

时间:2019-03-27 13:06:25

标签: python database-connection hdinsight presto pyhive

我正在尝试使用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')

我认为我在这里错过了一些关键的事情。请帮忙。

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])