【问题标题】:How to run presto queries in python using pyhive?如何使用pyhive在python中运行presto查询?
【发布时间】:2019-08-18 01:34:15
【问题描述】:

我正在尝试使用 pyhive 库在 python 中运行 presto 查询,但出现最大重试次数错误。我在本地(笔记本电脑)的 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')

我得到的错误是:

连接错误: HTTPConnectionPool(host='sm-hdinsight01-ssh.azurehdinsight.net', 端口 = 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')

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

【问题讨论】:

    标签: database-connection presto azure-hdinsight pyhive starburst


    【解决方案1】:

    听起来像是权限/身份验证问题。我目前在我的本地机器上使用一个 jupyter 笔记本 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])
    

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 2021-11-05
      • 2023-03-17
      • 2018-02-27
      • 1970-01-01
      • 2014-05-16
      • 2019-12-14
      • 2023-03-13
      • 2022-01-09
      相关资源
      最近更新 更多