Udostępnij za pośrednictwem


Wykonywanie zapytań dotyczących programu SQL Server za pomocą usługi Azure Databricks

W tym artykule pokazano, jak połączyć usługę Azure Databricks z serwerem Microsoft SQL, aby odczytywać i zapisywać dane.

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.

Konfigurowanie połączenia z programem SQL Server

W środowisku Databricks Runtime 11.3 LTS i nowszym możesz użyć sqlserver słowa kluczowego , aby użyć dołączonego sterownika do nawiązywania połączenia z serwerem SQL. Podczas pracy z ramkami danych użyj następującej składni:

Python

remote_table = (spark.read
  .format("sqlserver")
  .option("host", "hostName")
  .option("port", "port") # optional, can use default port 1433 if omitted
  .option("user", "username")
  .option("password", "password")
  .option("database", "databaseName")
  .option("dbtable", "schemaName.tableName") # (if schemaName not provided, default to "dbo")
  .load()
)

Scala

val remote_table = spark.read
  .format("sqlserver")
  .option("host", "hostName")
  .option("port", "port") // optional, can use default port 1433 if omitted
  .option("user", "username")
  .option("password", "password")
  .option("database", "databaseName")
  .option("dbtable", "schemaName.tableName") // (if schemaName not provided, default to "dbo")
  .load()

Podczas pracy z językiem SQL określ sqlserver w klauzuli USING i przekaż opcje podczas tworzenia tabeli, jak pokazano w poniższym przykładzie:

DROP TABLE IF EXISTS sqlserver_table;
CREATE TABLE sqlserver_table
USING sqlserver
OPTIONS (
  dbtable '<schema-name.table-name>',
  host '<host-name>',
  port '1433',
  database '<database-name>',
  user '<username>',
  password '<password>'
);

Korzystanie ze starszego sterownika JDBC

W środowisku Databricks Runtime 10.4 LTS i poniżej należy określić sterownik i konfiguracje przy użyciu ustawień JDBC. Poniższy przykład wykonuje zapytania dotyczące programu SQL Server przy użyciu 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.

Python

driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

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

url = f"jdbc:sqlserver://{database_host}:{database_port};database={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.microsoft.sqlserver.jdbc.SQLServerDriver"

val database_host = "<database-host-url>"
val database_port = "1433" // 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:sqlserver://{database_host}:{database_port};database={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()