使用 Azure Databricks 查詢 PostgreSQL
此範例會使用其 JDBC 驅動程式來查詢 PostgreSQL。 如需讀取、寫入、設定平行處理原則和查詢下推的詳細資訊,請參閱 使用 JDBC 查詢資料庫。
重要
本文所述的設定為 實驗性。 實驗性功能是以目前方式提供,且透過客戶支援不支援 Databricks。 若要取得完整的查詢同盟支援,您應該改用 Lakehouse 同盟,這可讓您的 Azure Databricks 使用者利用 Unity 目錄語法和數據控管工具。
使用 JDBC
Python
driver = "org.postgresql.Driver"
database_host = "<database-host-url>"
database_port = "5432" # update if you use a non-default port
database_name = "<database-name>"
table = "<table-name>"
user = "<username>"
password = "<password>"
url = f"jdbc:postgresql://{database_host}:{database_port}/{database_name}"
remote_table = (spark.read
.format("jdbc")
.option("driver", driver)
.option("url", url)
.option("dbtable", table)
.option("user", user)
.option("password", password)
.load()
)
Scala
val driver = "org.postgresql.Driver"
val database_host = "<database-host-url>"
val database_port = "5432" # update if you use a non-default port
val database_name = "<database-name>"
val table = "<table-name>"
val user = "<username>"
val password = "<password>"
val url = s"jdbc:postgresql://${database_host}:${database_port}/${database_name}"
val remote_table = spark.read
.format("jdbc")
.option("driver", driver)
.option("url", url)
.option("dbtable", table)
.option("user", user)
.option("password", password)
.load()
在 Databricks Runtime 中使用 PostgreSQL 連接器
在 Databricks Runtime 11.3 LTS 和更新版本中,您可以使用具名連接器來查詢 PosgresQL。 請參閱下列範例:
Python
remote_table = (spark.read
.format("postgresql")
.option("dbtable", "schema_name.table_name") # if schema_name not provided, default to "public".
.option("host", "database_hostname")
.option("port", "5432") # Optional - will use default port 5432 if not specified.
.option("database", "database_name")
.option("user", "username")
.option("password", "password")
.load()
)
SQL
DROP TABLE IF EXISTS postgresql_table;
CREATE TABLE postgresql_table
USING postgresql
OPTIONS (
dbtable '<schema-name>.<table-name>' /* if schema_name not provided, default to "public". */,
host '<database-host-url>',
port '5432', /* Optional - will use default port 5432 if not specified. */
database '<database-name>',
user '<username>',
password '<password>'
);
Scala
val remote_table = spark.read
.format("postgresql")
.option("dbtable", "schema_name.table_name") # if schema_name not provided, default to "public".
.option("host", "database_hostname")
.option("port", "5432") # Optional - will use default port 5432 if not specified.
.option("database", "database_name")
.option("user", "username")
.option("password", "password")
.load()