Databricks 使用 AWS RDS,无需 JDBC/ODBC

问题描述 投票:0回答:1

我正在尝试在 databricks 上运行查询语句,获取 RDS 实例作为源数据库。

我已经使用 jdbc 在 databricks python 笔记本中完成了它。然后使用

#I first set my jdbc url and retrieve USER/PASSWORD. For obvious reason, I cannot show this part


query= 'SELECT * FROM transactions'

spark_df=spark.read.format('jdbc')\
    .option("url", jdbc_url) \
    .option("query", query) \
    .option("user", USER) \
    .option("password", PASSWORD)\
    .load()

有没有办法可以直接查询数据库而不需要使用jdbc?例如,有模式分析、Redash、Superset 等平台,您只需在管理视图(主机/端口/用户/密码/等)中添加连接详细信息,然后在查询编辑器上您只需编写简单的内容即可SQL,它会直接连接到您的 RDS,而无需为您执行的每个查询进行 jdbc 连接。这几乎就像您在 RDS 实例上使用 PGADMIN 一样。

所以我想知道databricks是否可以做同样的事情,它只提示一个sql编辑器,你可以选择你的RDS表。我知道 databricks 有一个 SQL 数据仓库,但据我所知,您必须创建它的新实例并迁移数据。有没有办法只指向已经存在的 RDS 实例,而不是在 databricks UI 上创建仓库并迁移数据?

对于我所做的研究,这一切都指向从databricks创建一个新的仓库,我没有看到任何文档来添加现有的RDS作为您的仓库

amazon-web-services databricks amazon-rds
1个回答
0
投票

它的底层仍然是 JDBC,但您可以创建 基于 JDBC 的临时视图联合表:

CREATE TEMPORARY VIEW rds_table
USING JDBC
OPTIONS (
  url "<jdbc-url>",
  dbtable "<table-name>",
  user '<username>',
  password '<password>'
);

-- or --

CREATE TABLE rds_table
USING mysql
OPTIONS (
  dbtable '<table-name>',
  host '<database-host-url>',
  port '3306',
  database '<database-name>',
  user secret('mysql_creds', 'my_username'),
  password secret('mysql_creds', 'my_password')
);

然后直接在查询中使用它:

SELECT * FROM rds_table;

或者,如果使用 Unity Catalog,Lakehouse Federation 允许您挂载代表 RDS 实例的整个外部目录 - 检查文档以了解配置详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.