メインコンテンツまでスキップ

Databricks を使用した SQL Server のクエリ

important

従来のクエリ フェデレーションのドキュメントは廃止されており、更新されない可能性があります。このコンテンツに記載されている製品、サービス、またはテクノロジは、Databricks によって公式に承認またはテストされたものではありません。レイクハウスフェデレーションとはを参照してください。

この記事では、Databricks を Microsoft SQL Server に接続してデータの読み取りと書き込みを行う方法について説明します。

備考

実験段階

この記事で説明する構成は 試験段階です。試験的な機能は現状のまま提供され、 Databricks を通じて顧客のテクニカル サポートを通じてサポートされることはありません。 クエリ フェデレーションを完全にサポートするには、代わりに レイクハウスフェデレーションを使用して、 Databricks ユーザーが Unity Catalog 構文ツールとデータガバナンス ツールを利用できるようにする必要があります。

SQL Server への接続を構成する

Databricks Runtime 11.3 LTS 以降では、 sqlserver キーワードを使用して、SQL サーバーに接続するための付属のドライバーを使用できます。 データフレームを使用する場合は、次の構文を使用します。

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

SQL を使用する場合は、次の例に示すように、USING 句で sqlserver を指定し、テーブルの作成時にオプションを渡します。

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

従来の JDBC ドライバーを使用する

Databricks Runtime 10.4 LTS 以下では、JDBC 設定を使用してドライバーと構成を指定する必要があります。次の例では、JDBC ドライバーを使用して SQL Server をクエリします。読み取り、書き込み、並列処理の設定、クエリのプッシュダウンの詳細については、「 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()
)
この記事は役に立ちましたか?