4

我有一个扩展类的自定义 USql 应用程序IApplier

[SqlUserDefinedApplier]
public class CsvApplier : IApplier
{
    public CsvApplier()
    {
        //totalcount = count;
    }
    public override IEnumerable<IRow> Apply(IRow input, IUpdatableRow output)
    {
        //....custom logic
        //yield return or yield break
    }
}

然后将此应用程序从 Usql 脚本用作

@log =
SELECT t.ultimateID,
t.siteID,
.
.
.
t.eTime,
t.hours
FROM @logWithCount
CROSS APPLY
new BSWBigData.USQLApplier.CsvApplier() AS t(ultimateID string, siteID string, .... , eTime string, hours double, count long?);

我已经能够为应用程序的解耦部分编写单元测试/ATP。

如何为Apply方法的 C# 代码和依赖于输入/输出的自定义逻辑编写测试?如何使用已定义的输入和输出自动测试 usql 脚本,从而不需要数据湖帐户?

4

3 回答 3

3

在我们发布独立的 U-SQL Localrun SDK 包之前,请从安装 ADLA Tool for VS 的位置获取所需的文件。

在 VS2015 中,本地运行所需的所有依赖项都位于“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake DRI Tools for Visual Studio 2015\2.0.XXXX”中。 0\LocalRunSDK。您还需要“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake DRI Tools for Visual Studio 2015\2.0.XXXX.0\CppSDK”</p>

只需从这两个文件夹中复制文件并将它们放在类似的位置:

C:\USQLLocalRunSDK

然后您可以使用“LocalRunHelper.exe”在本地编译和运行您的 u-sql 脚本。在编译命令行上,您需要两个选项: -DataRoot “本地元数据和数据的存储位置”,与 ADLA Tool 中的设置选项相同。-CppSDK“您复制 CppSDK 文件的位置”该工具将在错误(编译或运行)时返回 -1,在成功时返回 0。

只需运行该工具即可查看命令行选项列表。

于 2016-06-13T08:12:53.543 回答
3

正如@Michael Rys 提到的,目前可以通过使用 U-SQL 本地运行来完成,但不一定在 Visual Studio 中。

我们试图通过为您提供“U-SQL 本地运行 SDK”来解决此问题,您可以将其用作在本地运行脚本的一种方式。然后,您可以通过编写一些 C# 单元测试包装器来利用它来测试 U-SQL 脚本,然后在您的 CI 系统/构建服务器中运行这些单元测试。

我们正在通过 NuGet 发布此 SDK,但如果您对它感兴趣,可以给我发送电子邮件至 Microsoft dot com 的 xiaoyzhu,我们可以将我们正在尝试发布的部分发送给您。

谢谢

Azure Data Lake 团队的 Xiaoyong Zhu

于 2016-06-12T08:37:51.070 回答
0

VisualStudio 的 ADL 工具具有本地模式,因此您也可以在本地执行 UDO。尽管您可能无法在本地获得完整的并行处理,但您应该能够在本地运行中测试您的代码。

于 2016-06-09T17:47:32.417 回答