在 Visual Studio Code 中使用 Python、R 和 C# 开发用于 Azure Data Lake Analytics 的 U-SQL
了解如何使用 Visual Studio Code (VS Code) 通过 U-SQL 编写 Python、R 和 C# 代码,并将作业提交到 Azure Data Lake 服务。 有关用于 VS Code 的 Azure Data Lake 工具的详细信息,请参阅使用针对 Visual Studio 的 Azure Data Lake 工具代码。
在编写代码隐藏自定义代码之前,需要在 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 代码隐藏文件”。
xx.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 中编写和使用自定义代码:用户定义的函数。
在工作区中选择 “新建文件 ”。
在 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 文件中,可以选择“ 编译脚本” 或“ 将作业提交 到正在运行的作业”。