Pular para o conteúdo principal

Consultar o SQL Server com a Databricks

Este artigo mostra como o senhor pode conectar o Databricks ao servidor Microsoft SQL para ler e gravar dados.

info

Experimental

As configurações descritas neste artigo são experimentais. Os recursos experimentais são fornecidos no estado em que se encontram e não recebem suporte do site Databricks por meio do suporte técnico ao cliente. Para obter suporte completo à federação de consultas, o senhor deve usar a lakehouse Federation, que permite que os usuários do Databricks aproveitem as ferramentas de sintaxe e governança de dados do Unity Catalog.

Configurar uma conexão com o servidor SQL

No Databricks Runtime 11.3 LTSe acima, você pode usar a palavra-chave sqlserver para usar o driver incluído para conectar-se ao servidor SQL. Ao trabalhar com DataFrames, use a seguinte sintaxe:

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

Ao trabalhar com SQL, especifique sqlserver na cláusula USING e passe opções ao criar uma tabela, conforme mostrado no exemplo a seguir:

SQL
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>'
);

Usar o driver JDBC legado

No Databricks Runtime 10.4 LTS e abaixo, o senhor deve especificar o driver e as configurações usando as configurações de JDBC. O exemplo a seguir consulta o SQL Server usando seu driver JDBC. Para obter mais detalhes sobre leitura, gravação, configuração de paralelismo e pushdown de consulta, consulte Consulta a bancos de dados usando 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()
)