重要
Azure Data Lake Analytics 于 2024 年 2 月 29 日停用。 通过此公告了解详细信息。
对于数据分析,组织可以使用 Azure Synapse Analytics 或 Microsoft Fabric。
U-SQL 使用 C# 提供扩展性模型。 在 U-SQL 脚本中,可以轻松调用 C# 函数并执行类似于 SQL 的声明性语言不支持的分析函数。 若要详细了解 U-SQL 扩展性,请参阅 U-SQL 可编程性指南。
实际上,任何代码都需要调试,但很难使用具有有限日志文件的云上的自定义代码调试分布式作业。 适用于 Visual Studio 的 Azure Data Lake 工具 提供了一项称为 “失败的顶点调试”功能,可帮助你更轻松地调试自定义代码中发生的故障。 当 U-SQL 作业失败时,服务将保留故障状态,该工具可帮助你将云故障环境下载到本地计算机进行调试。 本地下载将捕获整个云环境,包括任何输入数据和用户代码。
以下视频演示了用于 Visual Studio 的 Azure Data Lake 工具中失败的顶点调试。
重要
Visual Studio 需要使用以下两个更新来使用此功能: Microsoft Visual C++ 2015 Redistributable Update 3 和 适用于 Windows 的通用 C 运行时。
将失败的顶点下载到本地计算机
在用于 Visual Studio 的 Azure Data Lake 工具中打开失败的作业时,会看到一个黄色警报栏,并在错误选项卡中显示详细的错误消息。
选择 “下载” 以下载所有必需的资源和输入流。 如果下载未完成,请选择 “重试”。
下载完成后,选择 “打开 ”以生成本地调试环境。 将打开新的调试解决方案,如果已在 Visual Studio 中打开现有解决方案,请确保在调试之前保存并关闭它。
配置调试环境
注释
在调试之前,请务必在“异常设置”窗口中检查 公共语言运行时异常 (Ctrl + Alt + E)。
在新启动的 Visual Studio 实例中,你可能会或可能找不到用户定义的 C# 源代码:
源代码包含在调试解决方案中
捕获 C# 源代码有两种情况:
用户代码在代码隐藏文件中定义(通常在 U-SQL 项目中命名
Script.usql.cs
)。用户代码在 U-SQL 应用程序的 C# 类库项目中定义,并使用 调试信息注册为程序集。
如果源代码导入解决方案,可以使用 Visual Studio 调试工具(监视、变量等)来解决问题:
调试解决方案中不包含源代码
如果用户代码未包含在代码隐藏文件中,或者未向 调试信息注册程序集,则源代码不会自动包含在调试解决方案中。 在这种情况下,需要额外的步骤才能添加源代码:
右键单击 解决方案“VertexDebug” > 添加 > 现有项目... 以查找程序集源代码并将项目添加到调试解决方案。
获取 FailedVertexDebugHost 项目的项目文件夹路径。
Right-Click 添加的程序集源代码项目 > 属性,选择左侧的 “生成”选项卡,并粘贴以 \bin\debug 结尾的复制路径作为 输出 > 输出路径。 最终输出路径类似于
<DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\
。
这些设置后,开始使用 F5 和断点进行调试。 还可以使用 Visual Studio 调试工具(监视、变量等)来解决问题。
注释
每次修改代码以生成更新的 .pdb 文件后,重新生成程序集源代码项目。
重新提交作业
调试后,如果项目成功完成,输出窗口会显示以下消息:
The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).
重新提交失败的作业:
对于具有代码隐藏解决方案的作业,请将 C# 代码复制到代码隐藏源文件(通常
Script.usql.cs
)。对于具有程序集的作业,请在调试解决方案中右键单击程序集源代码项目,并将更新的 .dll 程序集注册到 Azure Data Lake 目录中。
重新提交 U-SQL 作业。