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