Azure Databricks を使用した PostgreSQL のクエリ

この例では、JDBC ドライバーを使用して PostgreSQL にクエリを実行します。 読み取り、書き込み、並列処理の構成、クエリ プッシュダウンの詳細については、JDBC を使用したデータベースのクエリに関するページを参照してください。

重要

この記事で説明する構成は試験段階です。 実験用の機能は現状のまま提供されていて、カスタマー テクニカル サポートを通じて Databricks でサポートされているわけではありません。 クエリフェデレーションの完全なサポートを得るには、代わりにレイクハウス フェデレーション を使用する必要があります。これにより、Azure Databricks ユーザーは Unity Catalog 構文とデータ ガバナンス ツールを利用できます。

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 での PostgresSQL コネクタの使用

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