首页 > 解决方案 > 如何将多个数据库添加到一个 Presto 目录?

问题描述

我正在使用 Presto 0.216 版,我想在一个目录文件中连接多个数据库。我正在使用 Apache SuperSet 通过 presto 运行查询,它迫使我进入一个名为 hive.properties 的目录。

我在 AWS 的 Ubuntu 实例上运行 Presto。我可以访问所有数据库并在多个目录文件(one.properties、hive.properties 等)中定义的多个数据库上运行“加入”查询。然而,如上所述,超集与 presto 的集成方式并非如此。

在 presto 文档中,它说我可以运行一个命令,通过连接器名称对数据库进行分组,here

SHOW SCHEMAS FROM mysql

但是,失败并出现错误:

Catalog mysql does not exist

我知道我没有名为 mysql.properties 的目录,但我所有的目录都有:

connector.name=mysql

所以我相信这应该有效。我只想通过 Presto 从 Apache SuperSet 查询多个数据库。不幸的是,我不能只添加多个 , 或 ; 我的目录变量的单独连接 URL:

connection-url=jdbc:mysql://myurl:3306/ 

标签: mysqlprestoapache-superset

解决方案


您只能将超集配置为指向 Presto 中的某个(一个)目录。目前没有其他方法可以配置 Superset。但是,您仍然可以发出查询(使用 SQL Lab 功能对此进行测试)连接来自多个目录的数据,就像通常通过 Presto CLI 一样:

select ..from catalog1.schema.table_name join catalog2.schema.table_name on ...

(你没有得到这种方式是 Superset 向你显示表格列表等)

MySQL 令人困惑,因为它们使用术语“数据库”来表示“模式”。单个 MySQL 服务器具有一个或多个用户数据库,以及包括“mysql”在内的内部数据库。因此,当文档说“MySQL 连接器为每个 MySQL 数据库提供模式”时,它指的是单个 MySQL 服务器内的多个“数据库”。

至于梅里尔的回答:

Qubole 文档中提到的“datasources”属性是一个属性,它曾经位于主 etc/config.properties 文件中,但多年来一直不需要。它已被弃用,所以你不应该设置它,我们应该完全删除它。


推荐阅读