LoginSignup
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-18

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
  3. You can use dark theme
What you can do with signing up
1