search
LoginSignup
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Azure SQL & Synapse Analytics Advent Calendar 2020 Day 19

posted at

updated at

Azure Synapse Analytics へ Azure Data Factoryの資産を移行する

Azure Synapse Analytics へ Azure Data Factoryの資産を移行する

はじめに

GAおめでとうございます!
Git機能もついているということで、既存のAzure Data Factory (以下、ADF)のパイプライン移行手順を検証したいと思います。Databricks部分の移行も試してみます

今後、この移行はソリューションが提供されるかもしれませんが、いち早く移行したい方の参考になればと幸いです。

(2020年12月時点情報です)

参考

もうこれだけ見ればいいんじゃないかという良記事です。かなり参考にしてます。

Azure Synapse Analytics 日本上陸記念! Synapse リソースの移行ステップ 2020年12月バージョン

移行イメージ

こんな計画をたてました。Databricksはオプションです。
※Databricksで使っているNotebookはそのまま使えない場合が多いので、事前検証しましょう

mig.png

移行手順

DataFactoryはそこそこ楽ですが、Databricksはかなり地道です。

Databricks は新しいワークスペース機能の、プロジェクト単位でのGit連携がきたら楽になるかもですね

  1. 新規Synapseを準備
  2. 既存ADF環境のコード準備
  3. 既存ADF環境Git Repository切断
  4. 新規Synapse環境Git Repository接続
  5. 参照先、アクティビティ修正
  6. Databricks Notebook移行、修正(オプション)

利用資材

AzureCloudScaleAnalyticsHOLで作成されるコード資産、Data FactoryとDatabricks部分を使ってみます。

Githubのほうは閉域構成に対応させた内容にしていますが、この記事ではそのあたり無視して簡略化します。

このようなデータ移動→notebook実行のパイプラインと

pipeline0.png

いくつかのノートブックが対象です。

adbnotebook1.png

※抜粋

SQLPool,Data Lake Storage gen2 のDataの移行に関しては参考記事をご確認ください。

※その場合でもNW構成はあらためて設定が必要かと思います。

1. 新規Synapseを準備

Synapse ワークスペースの作成を実施します。

作成の際は既存のData lake Storage Gen2を選択して、

[Data Lake Storage Gen2 アカウント 'xxx' のストレージ BLOB データ共同作成者ロールを自分に割り当てます。]

にチェックをつけます。
これで既存のストレージが流用できます。

2. 既存ADF環境のコード準備

もしDataFactoryのGit統合を設定していない場合は、Git リポジトリに接続するを実施してください。

Git環境にこのようなコードが保存されます。
self-hosted integration runtimeも利用している環境なのと、KeyVaultなんかもありますね。
このあたりは補足であつかっていきます。

DatalakeとSynapseへのLinked Serviceが移行対象です。

jsons.png

3. 既存ADF環境Git Repository切断

別のGit リポジトリに切り替えるを実施します。

4. 新規Synapse環境Git Repository接続

Synapse Studio で Git リポジトリを構成するを実施します。

全手順で切断したGit Repositoryを利用します。

このような形でコードが追加されます。

codes.png

Synapse は初期状態では、Linked Serviceとして以下の二つと既定のAzure Integration Runtimeがコードで保存されています。

初期のLinked Serivice

  • Synapseのリソース名-WorkspaceDefaultSqlServer
    • 専用SQLプールへの接続です。パラメータに専用SQLプール名を入力することで、各種機能から専用SQLプールへ接続が可能です。
  • Synapseのリソース名-WorkspaceDefaultStorage
    • リソース作成時に指定したData Lake Storage

5. 参照先、アクティビティ修正

Datasetの参照先修正

地道な作業です。linked serviceのrelatedからリンクが張られているので、一つ一つ直していきます。
数が多い場合は一度localにcloneして、一括置換したほうがよいです。

対象はこの二つ
linked edit target.png

以下のように変更します。

Datalake用→Synapseのリソース名-WorkspaceDefaultStorage に変更

update.png

専用SQLプールSynapseのリソース名-WorkspaceDefaultSqlServerに変更

dwupdate.png

結果
update_linkedresulrt1.png

不要なlinked Serviceは削除しておきましょう。

もし、sas トークンの認証をしていた場合など認証情報をDataFactoryに保持していた場合は設定しなおしてください。

アクティビティの参照先修正

databricksアクティビティをsynapseのnotebookアクティビティに変更して、実行するnotebookを選択します。

Synapse notebookに変更します。

synapsenotebook.png

notebookの内容を選択しておきます。

notebook_act2.png

6. Databricks Notebook移行、修正(オプション)

Databricks Notebook移行

地道にipynb形式でノートブックをダウンロードします。

adbnotebook1.png

Databricks CLIを利用すれば少し楽です

ワークスペースフォルダーをローカルファイルシステムにエクスポートする

フォーマットオプションに関する参考:https://forums.databricks.com/questions/38399/databricks-cli-export-dir-to-save-ipynb-files-not.html

次に、Synapse Notebookとしてimportします。
複数ファイル選択してアップロード後、フォルダ構成などを修正します。

インポートから、すべてのファイルを一括アップしましょう
imports.png

フォルダ作成まで実施します。

notebooksimported.png

Databricks Notebook内容修正

参照しているパスは変えていきましょう。
マウントパスを指定している箇所をabfss:~ではじまるパスに書き換えます。

もし別のノートブックを呼び出しているパートがあったら、preview機能をオンにして、コードを書き換えます。

たとえば、

databricksでは「datalake」という名称のコンテナを「mnt/datalake」という名称でマウントしていた場合、


root_path = "dbfs:/mnt/datalake/contoso/"

と書いていましたが、

Synapseではこうなります。

# primary の場合
root_path = "/contoso/" 

delta テーブルはdatabricksでこういう形式での定義(列名を事前定義して、空のテーブルを作る)ができましたが、こちらはSynapseでは対応していない記法なので注意


spark.sql(
    """
    CREATE TABLE FactOnlineSales
      (
        OnlineSalesKey integer not null ,
~~~~~~~~~~~~~~~~~~~~~~~~~~~
      )
    USING delta
    LOCATION '{}'
    """.format(FactOnlineSales_delta_silver_path)\
)

Spark テーブルの挙動に関してはこちらの記事を参考にどうぞ

AzureSynapseAnalyticsのメタデータ共有についてわかったこと

補足

linked serviceに関して、以前のDatabricksアクティビティではData Factory->Databricksの認証設定が必要でしたが、Synapseでは不要となっています。

認証の管理オーバヘッドが低減されるのはSynapse Analyticsの良さのひとつですね

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
What you can do with signing up
1
Help us understand the problem. What are the problem?