Compartilhar via

解释Azure Synapse Analytics中的错误代码

许多因素可能导致 Synapse Analytics 中的 Spark 应用程序失败。 例如,失败可能源于系统错误或用户错误。 以前,与 Synapse Analytics 上的失败作业对应的所有错误都显示了通用错误代码 LIVY_JOB_STATE_DEAD。 此错误代码没有进一步了解作业失败的原因。 为了找出解决方案并识别根本原因,您必须投入大量精力,通过挖掘驱动程序、执行程序、Spark 事件和 Livy 日志。

新的错误代码提供了一个更精确的列表,用于替换以前的泛型消息。 新消息描述失败的原因。 每当 Synapse Analytics 上的作业失败时,错误处理功能都会分析并检查后端的日志以确定根本原因。 然后,它会在监视窗格中向用户显示一条消息,以及解决问题的步骤。

在 Synapse 中启用错误分类

将以下 Spark 配置在作业或池级别设置为 truefalse,以启用或禁用错误分类功能。

livy.rsc.synapse.error-classification.enabled

以下部分列出了当前支持的一些错误类型。 产品团队通过改进模型不断优化和添加更多错误代码。

错误代码类别

每个错误代码都属于以下四个类别之一:

  • 用户 - 指示用户错误
  • 系统 - 指示系统错误
  • 不明确 - 可能是用户或系统错误
  • 未知 - 尚未分类,很可能是因为错误类型未包含在模型中

每种分类类型的错误代码示例

Spark_User_TypeError_TypeNotIterable(类型不可迭代错误)

在Python中,当使用成员资格运算符(TypeError: argument of type 'insert type' is not iterablein)检查值是否位于不可迭代的对象(如列表、元组或字典)时,会发生错误not in。 此错误通常是因为尝试在不可迭代的对象中搜索值。 若要修复此错误,请尝试以下解决方案:

  • 检查该值是否存在于可迭代对象中。
  • 如果要对另一个值进行检查,请使用逻辑运算符而不是成员资格运算符。
  • 如果成员资格运算符包含值 None ,则无法迭代。 添加 null 检查或分配默认值。
  • 检查你正在使用的值的类型是否确实可以检查,以及键入是否正确。

Spark_System_ABFS_OperationFailed

Azure Data Lake Storage (ADLS) Gen2 的操作失败。

此错误通常是由于权限问题而发生的。

请确保 Spark 作业中引用的所有 ADLS Gen2 资源在作业需要读取和写入的存储帐户上具有 存储 Blob 数据参与者 RBAC 角色。 检查此 Spark 应用程序的日志。 转到Synapse Studio,从左窗格中选择Monitor选项卡。 从 “活动 ”部分,选择 Apache Spark 应用程序 并从列表中选择 Spark 作业。 对于遇到此问题的 ADLS Gen2 存储帐户名称,请在此页面底部的日志选项卡中查看可用的日志。

Spark_Ambiguous_ClassLoader_NoClassDefFound

运行脚本时找不到代码所需的类。 有关详细信息,请参见:

请确保 Synapse 运行的所有代码依赖项都包含在 JAR 中。 如果你没有或不能将第三方 JAR 包含在你自己的代码中,请确保所有依赖项都包含在要对其执行代码的 Spark 池的工作区包中,或者它们包含在 Spark 批处理提交的 引用文件 列表中。

Spark_Unknown_Unknown_java.lang.Exception

未知故障。 模型无法对错误进行分类。

如果启用此功能,Synapse Studio会显示错误代码(包括和超出上一个列表),以及应用程序错误窗格中的故障排除说明。

注释

如果围绕 Synapse 监视作业生成了任何工具,该作业通过筛选 LIVY_JOB_STATE_DEAD 错误代码来检查失败的作业,则你的应用不再有效,因为返回的错误代码不同。 根据需要相应地修改任何脚本以使用此功能或禁用该功能。