다음을 통해 공유


Azure Databricks를 사용하여 SQL Server 쿼리

이 문서에서는 Azure Databricks를 Microsoft SQL Server에 연결하여 데이터를 읽고 쓰는 방법을 보여 줍니다.

중요합니다

레거시 쿼리 페더레이션 설명서가 사용 중지되었으며 업데이트되지 않을 수 있습니다. 이 콘텐츠에 언급된 구성은 Databricks에서 공식적으로 승인되거나 테스트되지 않습니다. Lakehouse Federation이 원본 데이터베이스를 지원하는 경우 Databricks는 대신 이 데이터베이스를 사용하는 것이 좋습니다.

SQL Server에 대한 연결 구성

Databricks Runtime 11.3 LTS 이상에서는 키워드를 sqlserver 사용하여 포함된 드라이버를 사용하여 SQL Server에 연결할 수 있습니다. DataFrames를 사용하는 경우 다음 구문을 사용합니다.

파이썬

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

스칼라

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

SQL을 사용할 때, 아래 예시와 같이 테이블 생성 시 sqlserver 절에 USING을(를) 지정하고 옵션을 전달하세요.

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

레거시 JDBC 드라이버 사용

Databricks Runtime 10.4 LTS 이하에서는 JDBC 설정을 사용하여 드라이버 및 구성을 지정해야 합니다. 다음 예제에서는 JDBC 드라이버를 사용하여 SQL Server를 쿼리합니다. 읽기, 쓰기, 병렬 처리 구성 및 쿼리 푸시다운에 대한 자세한 내용은 JDBC를 사용하여 데이터베이스 쿼리를 참조하세요.

파이썬

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

스칼라

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