Udostępnij za pośrednictwem


Wykonywanie zapytań względem bazy danych MySQL za pomocą usługi Azure Databricks

W tym przykładzie zapytanie MySQL używa sterownika JDBC. Aby uzyskać więcej informacji na temat odczytywania, zapisywania, konfigurowania równoległości i wypychania zapytań, zobacz Tworzenie zapytań dotyczących baz danych przy użyciu JDBC.

Ważne

Konfiguracje opisane w tym artykule są eksperymentalne. Funkcje eksperymentalne są udostępniane zgodnie z oczekiwaniami i nie są obsługiwane przez usługę Databricks za pośrednictwem pomocy technicznej klienta. Aby uzyskać pełną obsługę federacji zapytań, należy zamiast tego użyć usługi Lakehouse Federation, która umożliwia użytkownikom usługi Azure Databricks korzystanie ze składni wykazu aparatu Unity i narzędzi do zapewniania ładu danych.

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

Używanie łącznika MySQL w środowisku Databricks Runtime

Korzystając z środowiska Databricks Runtime 11.3 LTS lub nowszego, możesz użyć nazwanego łącznika do wykonywania zapytań względem bazy danych MySQL. Zobacz poniższe przykłady:

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