LoginSignup
0
0

Azure Synapse Dedicated SQL Pool Connector の利用方法

Posted at

はじめに

Azure Synapse Dedicated SQL Pool Connector は Azure Synapse Analytics の Apache Spark Pool から Azure Synapse Dedicated SQL Pool (Azure Synapse 専用 SQL プール) のデータを操作するためのものです。
今回は Apache Spark Pool からこのコネクターを利用して Azure Synapse Dedicated SQL Pool に対する読み取り/書き込みを実施するための導入手順を説明します。

導入手順

1. Azure Synapse Dedicated SQL Pool の作成

Azure Synapse Dedicated SQL Pool は Synapse Studio にて下図の赤枠ボタンより作成できます。
スクリーンショット 2023-09-02 17.57.54.png

なお、SQL Admin ユーザーのパスワードは Azure Portal にて変更できます。
スクリーンショット 2023-09-02 18.07.44.png

2. テーブルの作成

Synapse Studio の SQL スクリプトにて、以下のクエリを実行しテーブルを作成しデータを投入します。

CREATE TABLE Employee (EmployeeName VARCHAR(50));
INSERT INTO Employee (EmployeeName) VALUES ('hoge');
SELECT * FROM Employee;

スクリーンショット 2023-09-02 18.12.24.png

3. データ ソースの作成

Synapse Studio の SQL スクリプトにて、以下のクエリを実行しデータ ソースを作成します。

データベースのマスターキーは手順 1 で説明した SQL Admin パスワードとは別物であり、ここでは任意の値を入力すればよいことになります。なお、該当のストレージ アカウントには IAM 設定で Synapse マネージド ID に対してストレージ BLOB 共同作成者権限を付与していることを前提とします。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<任意の値>';

CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = 'MANAGED IDENTITY';

CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH
  (LOCATION = 'abfss://<コンテナ名>@<ストレージアカウント名>.dfs.core.windows.net/<フォルダパス>',
   CREDENTIAL = AzureStorageCredential,
   TYPE = HADOOP);

スクリーンショット 2023-09-02 18.17.39.png

4. コードの実行

ノートブックで以下のコードを実行して、データの読み取りができることを確認します。

import com.microsoft.spark.sqlanalytics
from com.microsoft.spark.sqlanalytics.Constants import Constants
from pyspark.sql.functions import col

dfToReadFromTable = (spark.read
                     .option(Constants.SERVER, "<SQLサーバー名>.sql.azuresynapse.net")
                     .option(Constants.USER, "<ユーザー名>")
                     .option(Constants.PASSWORD, "<パスワード>")
                     .option(Constants.DATA_SOURCE, "MyAzureStorage")
                     .synapsesql("<SQLデータベース名>.dbo.Employee")
                     .limit(10))

dfToReadFromTable.show()

スクリーンショット 2023-09-02 20.57.15.png

ノートブックで以下のコードを実行して、データの書き込みができることを確認します。

import com.microsoft.spark.sqlanalytics
from com.microsoft.spark.sqlanalytics.Constants import Constants
from pyspark.sql.types import StructType, StructField, StringType

data = {'EmployeeName': 'fuga'}

schema = StructType([
  StructField('EmployeeName', StringType(), True),
])

df = spark.createDataFrame(data=[data], schema=schema)

(df.write
 .option(Constants.SERVER, "<SQLサーバー名>.sql.azuresynapse.net")
 .option(Constants.USER, "<ユーザー名>")
 .option(Constants.PASSWORD, "<パスワード>")
 .option(Constants.DATA_SOURCE, "MyAzureStorage")
 .option(Constants.STAGING_STORAGE_ACCOUNT_KEY,"<ストレージアカウントキー>")
 .mode("overwrite")
 .synapsesql("<SQLデータベース名>.dbo.Employee"))

スクリーンショット 2023-09-02 21.35.46.png

おわりに

Azure Synapse Analytics にて Azure Synapse Dedicated SQL Pool Connector を利用して Apache Spark Pool から Azure Synapse Dedicated SQL Pool に対して読み取り/書き込みが実行できることを確認しました。
今回は基本認証を利用していますが、Azure AD 認証を利用することも可能です。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0