Freigeben über


Abfragen von PostgreSQL mit Azure Databricks

In diesem Beispiel wird PostgreSQL mithilfe des JDBC-Treibers abfragt. Weitere Informationen zum Lesen, Schreiben und Konfigurieren von Parallelismus und zum Abfrage-Pushdown finden Sie unter Abfragen von Datenbanken mithilfe von JDBC.

Wichtig

Die in diesem Artikel beschriebenen Konfigurationen sind experimentell. Experimentelle Funktionen werden ohne Mängelgewähr („wie besehen“) bereitgestellt und nicht von Databricks über Kanäle des technischen Kundensupports unterstützt. Um vollständige Unterstützung für den Abfrageverbund zu erhalten, sollten Sie stattdessen Lakehouse-Verbund verwenden, wodurch Ihre Azure Databricks-Benutzer die Vorteile der Unity Catalog-Syntax und der Datengovernancetools nutzen können.

Verwenden von 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()

Verwenden des PostgreSQL-Connectors in Databricks Runtime

In Databricks Runtime 11.3 LTS und höher können Sie zum Abfragen von PostgreSQL den benannten Connector verwenden. Hierzu folgende Beispiele:

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()