无法使 Apache Superset 连接到 Presto DB(此 PrestoDB 已连接到 Apache Pinot)
Not able to make Apache Superset connect to Presto DB (this PrestoDB is connected to Apache Pinot)
我是 Apache Pinot、PrestoDb 和 Superset 的新手。我已成功设置 PrestoDB 并使用以下步骤将其连接到 Apache Pinot:
docker run \
--network pinot-demo \
--name=presto-coordinator \
-p 8080:8080 \
-d apachepinot/pinot-presto:latest
我可以查询 PrestoDB 并已验证 PrestoDB 能够从 Pinot 获取记录。
$ presto/presto-cli --server localhost:8080 \
--catalog pinot --schema default
presto:default> show catalogs;
presto:default> select * from my_table limit 10;
col1 | col2
--------------------
val 1 | 1990380139
val 2 | 1990380130
val 3 | 1990380130
现在,我使用官方 docker 图像和步骤启动并初始化 Apache Superset。由于 Superset 也默认在 8080 上运行,因此我使用了 -p 8088:8080。 (不知道这算不算问题)
docker run --network pinot-demo --name superset -p 8088:8080 -d apache/superset:latest
docker exec -it superset superset fab create-admin \
--username admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com \
--password admin
docker exec -it superset superset db upgrade
docker exec -it superset superset init
在这个 Superset 网络应用程序上,我想添加一个新的 PrestoDb 数据库。以下是我尝试过但 Superset 无法连接到 PrestoDB 的 SQLAlchemy URI。
1. hive://hive@localhost:8080/pinot
2. presto://localhost:8080/
3. presto://localhost:8080/pinot
4. presto://localhost:8080/pinot/default
5. hive://hive@localhost:8080/pinot/default
请帮我找出正确的 SQLAlchemy URI 以在 Apache Superset 和 PrestoDB 之间建立连接。
值得注意的是,当我分别使用 hive 和 presto dialect/driver 时,我遇到了以下错误。
使用时
hive://hive@localhost:8000/pinot
INFO:thrift.transport.TSocket:Could not connect to ('127.0.0.1', 8000)
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/thrift/transport/TSocket.py", line 113, in open
handle.connect(sockaddr)
ConnectionRefusedError: [Errno 111] Connection refused
INFO:thrift.transport.TSocket:Could not connect to ('127.0.0.1', 8000)
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/thrift/transport/TSocket.py", line 113, in open
handle.connect(sockaddr)
ConnectionRefusedError: [Errno 111] Connection refused
ERROR:thrift.transport.TSocket:Could not connect to any of [('127.0.0.1', 8000), ('127.0.0.1', 8000)]
使用时
presto://localhost:8000/pinot
INFO:pyhive.presto:SELECT 1
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:8000
当您尝试从 superset 访问 presto 时,网络连接在 superset 容器和 presto 容器之间,因此 localhost 将无法工作。
您需要获取prestodb容器的真实ip,可以是容器ip,也可以是主机ip。您可以尝试以下方法吗?
presto://{continer_ip}:8080/pinot
presto://{host_id}:8080/pinot
我是 Apache Pinot、PrestoDb 和 Superset 的新手。我已成功设置 PrestoDB 并使用以下步骤将其连接到 Apache Pinot:
docker run \
--network pinot-demo \
--name=presto-coordinator \
-p 8080:8080 \
-d apachepinot/pinot-presto:latest
我可以查询 PrestoDB 并已验证 PrestoDB 能够从 Pinot 获取记录。
$ presto/presto-cli --server localhost:8080 \
--catalog pinot --schema default
presto:default> show catalogs;
presto:default> select * from my_table limit 10;
col1 | col2
--------------------
val 1 | 1990380139
val 2 | 1990380130
val 3 | 1990380130
现在,我使用官方 docker 图像和步骤启动并初始化 Apache Superset。由于 Superset 也默认在 8080 上运行,因此我使用了 -p 8088:8080。 (不知道这算不算问题)
docker run --network pinot-demo --name superset -p 8088:8080 -d apache/superset:latest
docker exec -it superset superset fab create-admin \
--username admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com \
--password admin
docker exec -it superset superset db upgrade
docker exec -it superset superset init
在这个 Superset 网络应用程序上,我想添加一个新的 PrestoDb 数据库。以下是我尝试过但 Superset 无法连接到 PrestoDB 的 SQLAlchemy URI。
1. hive://hive@localhost:8080/pinot
2. presto://localhost:8080/
3. presto://localhost:8080/pinot
4. presto://localhost:8080/pinot/default
5. hive://hive@localhost:8080/pinot/default
请帮我找出正确的 SQLAlchemy URI 以在 Apache Superset 和 PrestoDB 之间建立连接。
值得注意的是,当我分别使用 hive 和 presto dialect/driver 时,我遇到了以下错误。
使用时
hive://hive@localhost:8000/pinot
INFO:thrift.transport.TSocket:Could not connect to ('127.0.0.1', 8000)
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/thrift/transport/TSocket.py", line 113, in open
handle.connect(sockaddr)
ConnectionRefusedError: [Errno 111] Connection refused
INFO:thrift.transport.TSocket:Could not connect to ('127.0.0.1', 8000)
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/thrift/transport/TSocket.py", line 113, in open
handle.connect(sockaddr)
ConnectionRefusedError: [Errno 111] Connection refused
ERROR:thrift.transport.TSocket:Could not connect to any of [('127.0.0.1', 8000), ('127.0.0.1', 8000)]
使用时
presto://localhost:8000/pinot
INFO:pyhive.presto:SELECT 1
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:8000
当您尝试从 superset 访问 presto 时,网络连接在 superset 容器和 presto 容器之间,因此 localhost 将无法工作。
您需要获取prestodb容器的真实ip,可以是容器ip,也可以是主机ip。您可以尝试以下方法吗?
presto://{continer_ip}:8080/pinot
presto://{host_id}:8080/pinot