Visual Studio Code で Azure Data Lake Analytics の Python、R、および C# を使用して U-SQL を開発する
Visual Studio Code (VS Code) を使用して、U-SQL で Python、R、C# のコード ビハインドを記述し、Azure Data Lake サービスにジョブを送信する方法について説明します。 AZURE Data Lake Tools for VS Code の詳細については、「Azure Data Lake Tools for Visual Studio コードを使用する」を参照してください。
分離コード カスタム コードを記述する前に、VS Code でフォルダーまたはワークスペースを開く必要があります。
Python および R の前提条件
ADL アカウントで Python および R の拡張機能アセンブリを登録します。
ポータルで自分のアカウントを開きます。
- [概要] を選択します。
- [ サンプル スクリプト] を選択します。
[More](もっと表示する) を選択します。
[U-SQL Extensions をインストールする] を選択します。
U-SQL 拡張機能のインストール後に、確認メッセージが表示されます。
注意
Python および R 言語サービスで最適なエクスペリエンスを実現するには、VSCode Python および R 拡張機能をインストールしてください。
Python ファイルの開発
ワークスペースで [新しいファイル] を 選択します。
U-SQL でコードを記述します。 サンプル コードを次に示します。
REFERENCE ASSEMBLY [ExtPython]; @t = SELECT * FROM (VALUES ("D1","T1","A1","@foo Hello World @bar"), ("D2","T2","A2","@baz Hello World @beer") ) AS D( date, time, author, tweet ); @m = REDUCE @t ON date PRODUCE date string, mentions string USING new Extension.Python.Reducer("pythonSample.usql.py", pyVersion : "3.5.1"); OUTPUT @m TO "/tweetmentions.csv" USING Outputters.Csv();
スクリプト ファイルを右クリックし、[ADL: Generate Python Code Behind File](ADL: Python 分離コード ファイルの生成) を選択します。
作業フォルダーに xxx.usql.py ファイルが生成されます。 Python ファイルでコードを記述します。 サンプル コードを次に示します。
def get_mentions(tweet): return ';'.join( ( w[1:] for w in tweet.split() if w[0]=='@' ) ) def usqlml_main(df): del df['time'] del df['author'] df['mentions'] = df.tweet.apply(get_mentions) del df['tweet'] return df
USQL ファイルを右クリックすると、スクリプトのコンパイルまたは実行中のジョブへのジョブの送信を選択できます。
R ファイルの開発
ワークスペースで [新しいファイル] を 選択します。
U-SQL ファイルでコードを記述します。 サンプル コードを次に示します。
DEPLOY RESOURCE @"/usqlext/samples/R/my_model_LM_Iris.rda"; DECLARE @IrisData string = @"/usqlext/samples/R/iris.csv"; DECLARE @OutputFilePredictions string = @"/my/R/Output/LMPredictionsIris.txt"; DECLARE @PartitionCount int = 10; @InputData = EXTRACT SepalLength double, SepalWidth double, PetalLength double, PetalWidth double, Species string FROM @IrisData USING Extractors.Csv(); @ExtendedData = SELECT Extension.R.RandomNumberGenerator.GetRandomNumber(@PartitionCount) AS Par, SepalLength, SepalWidth, PetalLength, PetalWidth FROM @InputData; // Predict Species @RScriptOutput = REDUCE @ExtendedData ON Par PRODUCE Par, fit double, lwr double, upr double READONLY Par USING new Extension.R.Reducer(scriptFile : "RClusterRun.usql.R", rReturnType : "dataframe", stringsAsFactors : false); OUTPUT @RScriptOutput TO @OutputFilePredictions USING Outputters.Tsv();
USQL ファイルを右クリックし、[ADL: Generate R Code Behind File](ADL: R 分離コード ファイルの生成) を選択します。
作業フォルダーに xxx.usql.r ファイルが生成されます。 R ファイルでコードを記述します。 サンプル コードを次に示します。
load("my_model_LM_Iris.rda") outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
USQL ファイルを右クリックすると、スクリプトのコンパイルまたは実行中のジョブへのジョブの送信を選択できます。
C# ファイルの開発
分離コード ファイルは、1 つの U-SQL スクリプトに関連付けられている C# ファイルです。 分離コード ファイルでは、スクリプト専用の UDO、UDA、UDT、UDF を定義できます。 UDO、UDA、UDT、UDF は、アセンブリを先に登録しなくても、スクリプト内で直接使用できます。 分離コード ファイルは、対になる U-SQL スクリプト ファイルと同じフォルダーに置かれます。 スクリプトに xxx.usql という名前が付けられた場合、分離コードの名前は xxx.usql.cs となります。 分離コード ファイルを手動で削除すると、関連付けられている U-SQL スクリプトの分離コード機能が無効になります。 U-SQL スクリプト用のカスタム コードを記述する方法の詳細については、「Writing and Using Custom Code in U-SQL – User-Defined Functions (U-SQL でのカスタム コードの記述と使用 - ユーザー定義関数)」を参照してください。
ワークスペースで [新しいファイル] を 選択します。
U-SQL ファイルでコードを記述します。 サンプル コードを次に示します。
@a = EXTRACT Iid int, Starts DateTime, Region string, Query string, DwellTime int, Results string, ClickedUrls string FROM @"/Samples/Data/SearchLog.tsv" USING Extractors.Tsv(); @d = SELECT DISTINCT Region FROM @a; @d1 = PROCESS @d PRODUCE Region string, Mkt string USING new USQLApplication_codebehind.MyProcessor(); OUTPUT @d1 TO @"/output/SearchLogtest.txt" USING Outputters.Tsv();
USQL ファイルを右クリックし、[ADL: Generate CS Code Behind File](ADL: CS 分離コード ファイルの生成) を選択します。
作業フォルダーに xxx.usql.cs ファイルが生成されます。 CS ファイルでコードを記述します。 サンプル コードを次に示します。
namespace USQLApplication_codebehind { [SqlUserDefinedProcessor] public class MyProcessor : IProcessor { public override IRow Process(IRow input, IUpdatableRow output) { output.Set(0, input.Get<string>(0)); output.Set(1, input.Get<string>(0)); return output.AsReadOnly(); } } }
USQL ファイルを右クリックすると、スクリプトのコンパイルまたは実行中のジョブへのジョブの送信を選択できます。