Visual Studio Code (VS Code) を使用して、U-SQL で Python、R、C# の分離コードを記述し、Azure Data Lake サービスにジョブを送信する方法について説明します。 VS Code 用 Azure Data Lake Tools の詳細については、「 Azure Data Lake Tools for Visual Studio Code の使用」を参照してください。
コードビハインドのカスタムコードを記述する前に、VS Codeでフォルダーまたはワークスペースを開く必要があります。
Python と R の前提条件
ADL アカウントの Python および R 拡張機能アセンブリを登録します。
ポータルでアカウントを開きます。
- [概要] を選択します。
- サンプル スクリプトを選択します。
その他 を選択します。
[ U-SQL 拡張機能のインストール] を選択します。
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: 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: R 分離コード ファイルの生成を選択します。
xxx.usql.r ファイルが作業フォルダーに生成されます。 R ファイルにコードを記述します。 コード サンプルを次に示します。
load("my_model_LM_Iris.rda") outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
USQL ファイルを右クリックすると、[スクリプトのコンパイル] または [実行中のジョブへのジョブの送信] を選択できます。
C# ファイルの開発
コードビハインド ファイルは、単一の U-SQL スクリプトに関連付けられた C# ファイルです。 コードビハインド ファイルには、UDO、UDA、UDT、UDF 専用のスクリプトを定義できます。 UDO、UDA、UDT、UDF は、最初にアセンブリを登録しなくても、スクリプト内で直接使用できます。 分離コード ファイルは、それに対応する U-SQL スクリプト ファイルと同じフォルダーに配置されます。 スクリプトの名前が xxx.usql の場合、分離コードには xxx.usql.cs という名前が付けられます。 分離コード ファイルを手動で削除すると、関連付けられている U-SQL スクリプトの分離コード機能が無効になります。 U-SQL スクリプトの顧客コードの記述の詳細については、「 U-SQL でのカスタム コードの記述と使用: User-Defined Functions」を参照してください。
ワークスペースで [新しいファイル ] を選択します。
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: 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 ファイルを右クリックすると、[スクリプトのコンパイル] または [実行中のジョブへのジョブの送信] を選択できます。