Azure Machine Learning からBLOBストレージに接続してみる。

今回は、Azure Machine Learning (以下Azure ML)とBLOBストレージの接続方法をご紹介します。

Azure MLでは手持ちのデータを直接アップロードし、モジュールとしてキャンバスに配置することができます。
しかし、大量にデータがある場合には、いちいちアップロードして、モジュールを配置しなおしてといった煩雑な操作はやっていられません。

そういう場合には、外部のストレージからデータの読み書き行うと便利です。
Azure MLでは外部ストレージと接続するモジュールが用意されており、そこからデータの入力や保存をすることができます。

今回はAzureのBLOBストレージをターゲットとしてデータの入力、出力をする方法をご紹介します。

BLOBコンテナーの作成

まずは、データの入力、出力先となるBLOBコンテナーを作成します。

「ストレージ アカウント」からBLOBコンテナーを作成するアカウントを選択し、サービスの「BLOB」をクリックします。

BLOBサービスの「コンテナー」窓をクリックし、表示されるペインの「+コンテナー」をクリック。
「新しいコンテナー」の「名前」に作成するコンテナー名を入力し「作成」をクリックします。

これで、BLOBコンテナーが作成できました。

※ BLOBコンテナーへのファイルアップロードについては下記の記事を参照してください。

AZURE STORAGE編~5分でわかるAZURE STORAGE BLOB アップロードとダウンロード~

ストレージアカウントの確認

Machine LearningとBLOBコンテナーを接続するためにストレージアカウントの情報を確認しておきます。
今回は、パブリックに公開されたBLOBコンテナーからURLでデータを入力し、プライベートアクセスのBLOBコンテナーに出力データを保存するという流れで紹介します。

まずは、入力データのURLを取得します。
入力元コンテナーの入力ファイルを選択し、表示されるBLOBのプロパティの「URL」をコピーしておきます。(テキストボックス右のボタンでコピーできます。)
※ このURLを使用する場合、コンテナーのアクセスポリシーを「BLOB」または「コンテナー」に変更しておく必要があります。
「プライベート」でアクセスする場合は、Azure Storage Explorer等でSAS URLを生成して使用する必要があります。

続いて出力先のストレージアカウント情報を取得します。
「すべての設定」→「アクセス キー」とクリックし、表示される「ストレージアカウント名」、「アクセス キー」をコピーしておきます。(「アクセス キー」は「Key1」、「Key2」のいずれでも可)

BLOBからURLでのデータ読み込み

Machine LearningでBLOBコンテナーからデータを入力する場合は、「Reader」モジュールを使います。
「Reader」モジュールをキャンバスに配置し、モジュールをクリック。
右ペインに下記の情報を選択、入力します。

項目 入力情報
Data source 「Azure Blob Storage」を選択
Authentication type 「PublicOrSAS」を選択
URL 取得したBLOBのURLを入力
※プライベートアクセスの場合はSAS URLを入力
Blob file format 入力ファイル形式に合わせて選択
File has header row ヘッダー情報(パラメータ名等)がある場合はチェック

BLOBコンテナーへのデータ出力

BLOBコンテナーへデータを出力する場合は、「Writer」モジュールを使います。
「Writer」モジュールをキャンバスに配置し、モジュールをクリック。
右ペインに下記の情報を選択、入力します。

項目 入力情報
Please specify data destination 「Azure Blob Storage」を選択
Please specify authentication type 「Account」を選択
Azure account name 取得した「ストレージアカウント名」を入力
Azure account key 取得した「アクセス キー」を入力
Path to blob beginning with container [コンテナー名]/[出力ファイル名]の形式で入力
Azure blob storage write mode 同名のBLOBがあった場合の処理を選択
File format for blob file 出力したいフォーマットを選択
Write blob header row ヘッダー情報(パラメータ名等)を書き込む場合はチェック

※「Azure blob storage write mode」で「Error」を選択している場合は出力先に同名のファイルが無いことを確認してください。
長時間の分析の末に、ファイル名重複で中断されてしまったといったことにもなりかねないため注意が必要です。

以上で設定は終了です。
「RUN」でExperimentを実行し、「Reader」、「Writer」モジュールにチェックが入れば正常に動作しています。
出力先のコンテナーにファイルが生成されていることが確認できました。

「Reader」、「Writer」モジュールを使う上での注意ですが、Experimentの実行中にこれらのモジュールをクリックすると強制的に中断されることがありますので、実行中はむやみに触らないことをお勧めします。

いかがでしたでしょうか。
モジュールの設定を書き換えるだけで連続して分析が行えるため、効率的にデータの分析が行えるようになります。
データベースやAzure以外のストレージからもデータを読み込めるので、ストレージに溜まったデータを分析したいという場合は是非使ってみて下さい。

次回もお楽しみに!!

この記事を書いた人

azure-recipe-user