データ移動サービスのAzure Data Factoryを利用してみます。
Azure Storageに限らず、オンプレミス環境のMySQLなどからもインポートできるようですが、Azureの世界の中でのデータコピーをやってみます。
前提
- Azure の課金アカウントを持っていること
- Azure Storageをアクティベート出来、何らかのデータを保存していること
- Azure DocumentDBをアクティベート出来、コレクションとデータベースを作成していること
関連記事にて、Azure Storageにデータ投入する方法を記載しました。Webブラウザからアップロードするのが簡単だと思いますが。参考まで。
64MB以下(Azure Storage SAS access 延長戦【主にREST API sample code】)
http://qiita.com/snomoto/items/a24b34ebb111706679e8
Azure Data Factoryの設定
2016年12月現在、米国西部・米国東部・ヨーロッパ北部リージョンでしかリソースをアクティベート出来ないのですが、データをコピーする動きをするだけなので、日本リージョンのStorageからDocumentDBへのコピーなどは問題なく実施出来ます。
- GUIツールが用意されているようなので、そちらを利用してみます。
- 日時のバッチ処理的なコピーするスケジュールなども設定できます。
- データ元としてAzure Storageを指定します。
- コピーするデータを指定します。JSONの形式に問題があるときは、この時点でエラーが出力されます。
- 仕向け先のDocumentDBを指定します。
- 保存して実行します。
Azure Data Factoryの実行
単に保存して実行したらエラーが出ました。裏ではアクティベートが終わってないのかも知れません。
改めて、ダッシュボードから実行してみます。
- GUIがすぐには更新されないのですが、少し待つと表示が変わります。
- エラーが出ました。。。
Copy activity encountered a user error at Sink side:
ErrorCode=UserErrorDocumentDBWriteError,
'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,
Message=DocumentDb operation failed:
Message: {"Errors":["Request size is too large"]}
- 今回はデータをコピーするだけなので、一旦スケールアップしてみます。
- 改めて実行し、DocumentDBの「ドキュメントエクスプローラー」からデータを確認します。
以上。
Azure StorageのデータをAzure Storageにコピー
2016年12月追記
Data Factoryはスケジュール実行ができるのですが、上記のGUIの流れの中では、DocumentDBに対してはファイル名に日付を付与できません。
使い勝手の良いAzure Storageをアーカイブ代わりに使ってみます。
上記の流れの中で、出力ファイルの名前をセットするときに、年月日を自動で付与するように設定できます。
- フォルダを自動で作らせるとき
例えばですが、"Folder path"の欄に、以下のようにするとStorageのコンテナー内にフォルダが自動で作成されます。
コンテナー名blob/{year}/{month}/{day}/
- ファイルの接頭語として日付を付与する
Fileの接頭語として日付を付与する場合は、Filenameを下記のようにします。
{year}{month}{day}data
結果は以下のスクリーンショットの通りです。
簡単に日次でデータをアーカイブ化できますね。
おわりに
兎にも角にも、データのコピーが出来ました。簡単ですね。