Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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