Freigeben über


Abfragen von MySQL mit Azure Databricks

In diesem Beispiel wird MySQL mithilfe seines JDBC-Treibers abgefragt. Weitere Informationen zum Lesen, Schreiben, Konfigurieren von Parallelität und Abfrage-Pushdown finden Sie in Datenbankenabfragen mit JDBC.

Von Bedeutung

Die Legacy-Abfrageverbunddokumentation wurde eingestellt und kann nicht aktualisiert werden. Die in diesem Inhalt genannten Konfigurationen werden nicht offiziell von Databricks unterstützt oder getestet. Wenn Lakehouse Federation Ihre Quelldatenbank unterstützt, empfiehlt Databricks stattdessen die Verwendung.

VERWENDUNG VON JDBC

Python

driver = "com.mysql.cj.jdbc.Driver"

database_host = "<database-host-url>"
database_port = "3306" # update if you use a non-default port
database_name = "<database-name>"
table = "<table-name>"
user = "<username>"
password = "<password>"

url = f"jdbc:mysql://{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 = "com.mysql.cj.jdbc.Driver"

val database_host = "<database-host-url>"
val database_port = "3306" # 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:mysql://${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 MySQL-Connectors in Databricks Runtime

Mit Databricks Runtime 11.3 LTS und höher können Sie den benannten Connector verwenden, um MySQL abzufragen. Sehen Sie sich die folgenden Beispiele an:

Python

remote_table = (spark.read
  .format("mysql")
  .option("dbtable", "table_name")
  .option("host", "database_hostname")
  .option("port", "3306") # Optional - will use default port 3306 if not specified.
  .option("database", "database_name")
  .option("user", "username")
  .option("password", "password")
  .load()
)

SQL

DROP TABLE IF EXISTS mysql_table;
CREATE TABLE mysql_table
USING mysql
OPTIONS (
  dbtable '<table-name>',
  host '<database-host-url>',
  port '3306', /* Optional - will use default port 3306 if not specified. */
  database '<database-name>',
  user '<username>',
  password '<password>'
);
SELECT * from mysql_table;

Scala

val remote_table = spark.read
  .format("mysql")
  .option("dbtable", "table_name")
  .option("host", "database_hostname")
  .option("port", "3306") # Optional - will use default port 3306 if not specified.
  .option("database", "database_name")
  .option("user", "username")
  .option("password", "password")
  .load()