DB作成からデータインポートまで:Microsoft Azure SQL Data Warehouse を使ってみた(1)

  • f
  • t
  • p
  • h
  • l
title_Azure_DWH

Azure SQL Data Warehouseのデータインポートには注意が必要

先日、Microsoft社から「Azure SQL Data Warehouse」のプレビュー版がリリースされました。システム構成と価格に対して、Amazon Redshiftの対抗するサービスとして注目されていますので、実際使ってみた感想を踏まえて、ビッグデータ用のDBとして検証したいと思います。

Azure SQL Data Warehouse とは

Azureは、Microsoftが提供するクラウドプラットフォームです。その中の1つのサービスとして、ビッグデータ用DBのAzure SQL Data Warehouseがリリースされました。現在、クラウドのビッグデータ用DBとして、圧倒的なシェアを誇っているRedshiftを意識した仕様になっており、価格競争だけではなく、DBのシャットダウン、パフォーマンス変更が瞬時にできる事を強調しています。

Azure SQL Data Warehouse のDB環境構築

現在、Azure SQL Data WarehouseのDB環境を構築するまでに下記手続きを行う必要があり、最低でも3日ほど掛かります。

(2016.01.25追記)
状況は改善され、2015年11月ごろからAzureポータル画面のみで数分でDB環境構築ができます。DB環境構築後はファイヤーウォールの設定を行ってください。

  1. Microsoft Azureの無料評価版のユーザー登録
  2. Azureポータル画面からAzure SQL Data Warehouseのプレビュー版の使用承認依頼
  3. 後日、Microsoftから届く承認許可メールに従いSQL Databaseのサーバー環境構築
  4. Microsoftからメール返信で、作成したSQL Databaseのサーバー名を通知
  5. 後日、Microsoftから届くAzure SQL Data Warehouseへのアップグレードした旨のメールを確認
  6. Azure SQL Data Warehouseを作成するときに上記のサーバー名を指定してDB構築

要するに、現在、Azure SQL Data Warehouseのサーバーを構築する機能が、Azure Management Portal画面にないため、Azure SQL Data Warehousの使用承認後、SQL Databaseのサーバーを構築して、それをMicrosoftに通知して、Azure SQL Data Warehouseへアップグレードしてもらう流れのようです。

また、Azure SQL Data Warehousを構築するAzure Management Portal画面ですが、画面へのリンク先が非常に分かりにくく、間違って普通のAzureの無料評価版の画面に行きやすいです。Azure Management Portal画面は下記の画面になりますので、ご注意ください。

作成されたAzure SQL Data Warehousのサーバーは、ファイアウォールでアクセス制限が行われています。そのため、下記のようにサーバーの設定から、DB接続するPCのグローバルIPアドレスを追加する必要があります。

Azure SQL Data WarehouseへのデータインポートはBCPコマンドを使う

Azure SQL Data Warehouseは、Microsoft SQL Serverをベースに作られています。そのため、基本的なSQLコマンドは、SQL Serverで使っていた命令を同様のものが使えます。そして、データインポート命令もSQL Serverで使っているBCPコマンドを使用します。

BCPコマンドの実行環境を作るためには、下記のMicrosoftのサイトに行き、それぞれのインストーラーをダウンロードして、インストールする必要があります。

実際、BCPコマンドを実行して、大量データのインポート処理を行ったところ、下記のようなことが分かりました。(BCPコマンドの使用方法についてはこちらを参照)

  • インポートファイルの文字コードはShift-JISしか受け付けない(通常ならUTF-16も使える)
  • 2.3億行のデータインポート処理に1.5時間近く掛かる
  • 所々、取込めない行が発生する(エラー行のデータはSQL命令で登録できた)
  • パフォーマンス(DWU)を上げると動作が不安定になる

現在、プレビュー版のため、インポート処理が不安定なのかもしれませんが、残念な結果になってしまいました。特にインポート処理時間は、データ転送時間(約30分)を含めると2時間近い時間が掛かっているため、BCPコマンドは、大量データには不向きだと思います。ほかにもインポートコマンドとして、PolyBaseコマンドというものがありますが、使い方が分からず、今回は断念しました。

【2015.11.19 Update】PolyBaseについて、インポートの方法が分かりましたので、下記をご参照ください

次回は大量データの検索、集計時間を計測します

次回は、インポートした10億件以上のデータを使用して、SQLでの検索、集計時間を計測したいと思います。そして、Redshiftでも、同様のテーブルレイアウトと行数を準備して、処理時間の比較をしたいと思います。

【連載:Microsoft Azure SQL Data Warehouse を使ってみた】
  • f
  • t
  • p
  • h
  • l