目次
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環境構築後はファイヤーウォールの設定を行ってください。
- Microsoft Azureの無料評価版のユーザー登録
- Azureポータル画面からAzure SQL Data Warehouseのプレビュー版の使用承認依頼
- 後日、Microsoftから届く承認許可メールに従いSQL Databaseのサーバー環境構築
- Microsoftからメール返信で、作成したSQL Databaseのサーバー名を通知
- 後日、Microsoftから届くAzure SQL Data Warehouseへのアップグレードした旨のメールを確認
- 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について、インポートの方法が分かりましたので、下記をご参照ください
- PolyBaseを使ったAzure SQL DWへの高速インポート ~Azure Storageにデータをアップロードする~
- PolyBaseを使ったAzure SQL DWへの高速インポート ~図解で分かりやすく説明~
次回は大量データの検索、集計時間を計測します
次回は、インポートした10億件以上のデータを使用して、SQLでの検索、集計時間を計測したいと思います。そして、Redshiftでも、同様のテーブルレイアウトと行数を準備して、処理時間の比較をしたいと思います。