了解如何排查由于运行时更改而导致的 U-SQL 运行时故障

重要

Azure Data Lake Analytics 于 2024 年 2 月 29 日停用。 了解更多信息,请查看此公告

对于数据分析,你的组织可以使用 Azure Synapse AnalyticsMicrosoft Fabric

Azure Data Lake U-SQL 运行时(包括编译器、优化器和作业管理器)是处理 U-SQL 代码的内容。

选择 U-SQL 运行时版本

从 Visual Studio、ADL SDK 或 Azure Data Lake Analytics 门户提交 U-SQL 作业时,作业将使用当前可用的默认运行时。 U-SQL 运行时的新版本会定期发布,并包括次要更新和安全修补程序。

还可以选择自定义运行时版本;因为想要试用新更新,需要保留较旧版本的运行时,或者已为报告的问题提供了修补程序,因为无法等待常规的新更新。

谨慎

选择不同于默认值的运行时可能会中断 U-SQL 作业。 仅使用这些其他版本进行测试。

在极少数情况下,Microsoft支持部门可以将不同版本的运行时固定为帐户的默认值。 确保尽快还原此引脚。 如果你继续使用该版本,它将在将来的某个日期过期。

监视作业 U-SQL 运行时版本

可以通过 Visual Studio 的作业浏览器或 Azure 门户的作业历史记录,查看过去作业在帐户作业历史记录中使用的运行时版本的历史记录。

  1. 在 Azure 门户中,转到 Data Lake Analytics 帐户。
  2. 选择“ 查看所有作业”。 帐户中所有活动作业和最近完成的作业的列表将会出现。
  3. (可选)选择“筛选器”,以帮助按时间范围作业名称和作者值查找作业。
  4. 可以看到已完成作业中使用的运行时。

显示过去作业的运行时版本

可用运行时版本随时间而变化。 默认运行时始终称为“default”,我们保留至少以前的运行时一段时间可用,并出于各种原因使特殊运行时可用。 显式命名的运行时通常遵循以下格式(斜体用于变量部分,[] 指示可选部件):

release_YYYYMMDD_adl_buildno[_modifier]

例如,release_20190318_adl_3394512_2表示 2019 年 3 月 18 日运行时版本的第二个版本3394512,release_20190318_adl_3394512_private表示同一版本的专用版本。 注意:日期与上次签入的日期有关,而不一定是该版本的正式发布日期。

排查 U-SQL 运行时版本问题

可能会遇到两个可能的运行时版本问题:

  1. 脚本或某些用户代码正在将行为从一个版本更改为下一个版本。 此类重大变更通常会通过发布说明提前告知。 如果遇到此类中断性变更,请联系Microsoft支持部门报告此中断行为(如果尚未记录),并针对较旧的运行时版本提交作业。

  2. 您曾显式或隐式地使用非默认运行时,该运行时已固定到您的帐户上,并在一段时间后被移除。 如果缺少运行时,请升级脚本以使用当前默认运行时运行。 如果需要更多时间,请联系Microsoft支持部门

已知问题

  1. 在 USQL 脚本中引用 Newtonsoft.Json 文件版本 12.0.3 或更高版本将导致以下编译失败:

    “很抱歉;在 Data Lake Analytics 帐户中运行的作业可能会运行速度更慢或无法完成。 意外的问题是阻止我们自动将此功能还原到 Azure Data Lake Analytics 帐户。 已联系 Azure Data Lake 工程师进行调查。

    调用堆栈将包含的内容:
    System.IndexOutOfRangeException: Index was outside the bounds of the array.
    at Roslyn.Compilers.MetadataReader.PEFile.CustomAttributeTableReader.get_Item(UInt32 rowId)
    ...

    解决方案:使用 Newtonsoft.Json 文件 v12.0.2 或更低版本。

  2. 客户可能会在其应用商店中看到临时文件和文件夹。 这些是作为正常作业执行的一部分生成的,但通常在客户看到它们之前将其删除。 在某些情况下,它们是罕见的和随机的,它们可能仍然可见。 它们最终被删除,永远不会计入用户存储的一部分,也不会产生任何形式的费用。 根据客户的作业逻辑,他们可能会导致问题。 例如,如果作业枚举文件夹中的所有文件,然后比较文件列表,则由于存在意外的临时文件,它可能会失败。 同样,如果下游作业枚举给定文件夹中的所有文件以供进一步处理,则也可能枚举临时文件。

    解决方案:修复在运行时中标识,临时文件将存储在帐户级临时文件夹中,而不是当前输出文件夹。 临时文件将写入此新的临时文件夹,并在作业执行结束时删除。
    由于此修补程序正在处理客户数据,因此在 MSFT 发布之前,请务必在 MSFT 中验证此修补程序。 预计此修补程序将在 2021 年年中作为 beta 运行时提供,并在 2021 年下半年作为默认运行时提供。

另请参阅