【发布时间】:2021-11-05 00:49:43
【问题描述】:
我正在尝试在我在 dataproc 上运行的 presto 集群上运行查询 - 通过本地机器上的 python(使用 pyhive 中的 presto)。但我似乎无法弄清楚主机 URL。 GCP dataproc 甚至允许远程访问 presto 集群吗?
我尝试在 Presto 的 Web UI 上使用 URL,但这也不起作用。 我还查看了有关使用 Python 的云客户端库的文档。也没有帮助。 https://cloud.google.com/dataproc/docs/tutorials/python-library-example
from pyhive import presto
query = '''select * FROM system.runtime.nodes'''
presto_conn = presto.Connection(host={host}, port=8060, username ={user})
presto_cursor = presto_conn.cursor()
presto_cursor.execute(query)
错误
ConnectionError: HTTPConnectionPool(host='https', port=80): Max retries exceeded with url: {url}
(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fb41c0c25d0>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known'))
更新 我能够在 GCP 计算上手动创建 VM,配置 trino 并设置防火墙规则和负载均衡器,以便能够访问集群。
必须检查 dataproc 是否允许类似的配置。
【问题讨论】:
-
您使用什么主机名连接到 presto 集群?
-
我在 Presto Web UI 上尝试了 url。文档:cloud.google.com/dataproc/docs/concepts/accessing/…
-
组件网关通过 Knox 执行 url 重写,还有反向代理,所以我怀疑它是否能达到您的目的。
-
Dataproc 集群只不过是托管的 GCE 实例,因此所有与 GCE 相关的防火墙规则等仍然适用,所以您在 GCP 计算 (GCE) 上使用独立 trino VM 所做的事情,您应该这样做Dataproc 集群也是如此。没有通过 Dataproc 进行防火墙管理。
标签: python google-cloud-platform presto google-cloud-dataproc presto-jdbc