はじめての Azure Data Lake ~ Azure Data Lake Analytics でデータを分析してみよう ( 中編 ) ~
Microsoft Japan Data Platform Tech Sales Team
清水
みなさん、こんにちは。先日の前編では、 Azure Data Lake Analytics の作成方法と U-SQL スクリプトのコーディング、実行に用いるツールについてお伝えしましたが、いかがだったでしょうか ? 今回は Visual Studio を用いて U-SQL をコーディング、実行する際の手順やポイントについてお伝えします。
Visual Studio 2017 の Azure Data Lake Tools for Visual Studio
Visual Studio で U-SQL スクリプトのコーディング、実行を行う際は、 Microsoft Azure Data Lake Tools for Visual Studio( 以降 Azure Data Lake Tools) を使用します。前編では、 Visual studio 2015 に Azure Data Lake Tools をインストールする手順をお伝えしましたが、 Visual Studio の最新バージョンである Visual Studio 2017 でも U-SQL スクリプトのコーディング、実行はもちろん可能です。 Visual Studio 2017 では Azure Data Lake Tools は、 以下のようにインストーラーから「データの保存と処理」→「 Microsoft Azure Data Lake Tools 」を選択することでインストール可能です。
今回は、 Visual Studio 2017( 以降 Visual Studio) を用いて U-SQL スクリプトのコーディング、実行を行います。
U-SQL(ADLA) プロジェクトの作成
Visual Studio で U-SQL スクリプトのコーディング、実行を行うには、まず U-SQL プロジェクトを作成します。 Visual Studio を起動し、「ファイル」→「新規」→「プロジェクト」を選択すると、以下の「新しいプロジェクト」が起動します。この画面で、「テンプレート」→「 Azure Data Lake 」→「 U-SQL(ADLA) 」を選択すると、複数の U-SQL に関連したテンプレートを確認することが出来ます。
通常は「 U-SQL Project 」を選択し、 U-SQL スクリプトをコーディング、実行しますが、ここでは「 U-SQL Sample Application 」を選択し、サンプルスクリプトを用いて説明を行います。 U-SQL プロジェクトが作成されると、「ソリューションエクスプローラ」内に「 AmbulanceDataSet 」と「 SearchLog 」の 2 つのフォルダが確認出来ます。ここでは「 SearchLog 」フォルダ内のファイルを使用するので、「 SearchLog 」フォルダを展開します。「 Samples 」というフォルダと拡張子が .usql のファイルが 5 つ確認出来ます。次に「 SearchLog-1-First_U-SQL_Script.usql 」をクリックし、ファイルを開きます。
Azure サブスクリプションへの接続
Visual Studio で Cloud Explorer を起動し、 Azure Data Lake Analytics( 以降 ADLA ) を作成した Azure サブスクリプションへ接続します。詳細は、はじめての Azure Data Lake ~ 環境構築からファイル アップロードまで ~の「 2.Visual Studio からのアップロード」をご参照下さい。
U-SQL の基本
「 SearchLog-1-First_U-SQL_Script.usql 」を開くと、以下のような画面が表示されます。
画面上部には、 ADLA へ U-SQL スクリプトを送信、実行するための「 Submit 」や接続先の ADLA 名等が表示されています。詳細は以下の通りです。
既定値 |
設定値 |
(local) | 接続先の ADLA 名を選択します。既定値は (local) で、 Visual Studio が動作している PC 上 で U-SQL スクリプトを実行することを意味しますが、ここでは、 Azure 上に作成した ADLA を前提に説明を行います。 |
master | 既定値 (master) を選択します。ADLA では 、SQL Server 等の RDB と同様にテーブルを作成可能で、作成したテーブルはデータベースに格納されます。既定では master というデータベースのみが存在しています。実際の分析でテーブルを使用する際は、ユーザー定義のデータベースを別途作成し、このデータベースにテーブル等を作成します。 |
dbo | 既定値( dbo )を選択します。参照するデータベース内のスキーマを指定します。 |
続いて、 U-SQL スクリプトを細かく見てみます。最初のステートメントは以下の通りです。
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
EXTRACT 式は、後続のフィールドの定義と USING 句 で指定された書式 ( 上記の場合は タブ区切りのテキスト (TSV) ) に従い、 FROM 句で指定したファイル等から行を抽出することを意味します。 EXTRACT 式の詳細については、以下をご参照下さい。なお、 Duration フィールドのデータ型 (int) 直後の “?” は、このフィールドが NULL 値を許容することを意味します。
EXTRACT Expression (U-SQL)
https://msdn.microsoft.com/library/en-us/Mt621320.aspx
続く OUTPUT 文は、前述の EXTRACT 式で読み取った行を、 TO 句で指定されたファイル等へUSING句で指定された書式で出力することを意味します。
OUTPUT @searchlog
TO "/output/SearchLogResult1.csv"
USING Outputters.Csv();
OUTPUT 文の詳細については、以下をご参照下さい。
Output Statement (U-SQL)
https://msdn.microsoft.com/en-us/library/mt621334.aspx
上記の「 SearchLog-1-First_U-SQL_Script.usql 」は全体で ADLS 内の "/Samples/Data/SearchLog.tsv" ファイルから行を読み取り、グループ化や集計等は行わず 、ADLS 内の "/output/SearchLogResult1.csv" ファイルに出力するということになります。続いて ADLA で U-SQL スクリプトを実行するため、「SearchLog-1-First_U-SQL_Script.usql 」の画面上部の「Submit」をクリックします。ADLAに送信した U-SQL スクリプトは、Jobという単位で実行されます。
しばらくすると、以下のような画面が表示されます。画面左側には、ジョブの実行状況、実行結果、実行時間等が表示されます。ジョブの実行準備が完了すると、画面右側にジョブ内部での処理の詳細や状況を表示するための Job Graph が表示されます。
なお、画面の表示と実際のジョブの実行状況にはタイムラグがあるため、直近の状況を確認したい場合は、をクリックし、ジョブの実行状況をアップデートします。 ジョブの実行が完了すると、 Job Summary は以下のように表示され、 Job Result の値は、 Succeeded になります。
出力されたファイルの内容は、 Job Graph 上部の「 Data 」タブで確認することが可能です。
Job Outputs 内の「~ SerchLogResult5.csv 」をクリックすると、以下のように出力結果が確認出来ます。
後編では、残りのサンプルスクリプトを用い、 U-SQL スクリプトのコーディング、実行する際の手順とポイントを引き続きお伝えします。
関連記事
はじめての Azure Data Lake ~ そもそも Data Lake って何? ~ はじめての Azure Data Lake ~ 環境構築からファイル アップロードまで ~ はじめての Azure Data Lake ~ Azure Data Lake Analytics でデータを分析してみよう ( 前編 ) ~ U-SQL Language Reference Azure Data Lake & Azure HDInsight Blog