Interpretación de códigos de error en Synapse Analytics
Existen muchos factores que pueden influir en por qué se produce un error en una aplicación Spark en Azure Synapse Analytics en la actualidad. Por ejemplo, puede deberse a un error de sistema o incluso a un error relacionado con el usuario. Anteriormente, todos los errores correspondientes a los trabajos con errores en Synapse Analytics emergían con un código de error genérico que mostraba LIVY_JOB_STATE_DEAD. Este código de error no aportaba más información sobre por qué se había producido un error en el trabajo. Requiere un esfuerzo significativo identificar la causa principal mediante la investigación del controlador, el ejecutor, el evento de Spark, los registros de Livy y la búsqueda de una resolución.
Hemos introducido una lista de códigos de error más precisa que reemplaza al mensaje genérico anterior. El nuevo mensaje describe la causa del error. Cada vez que se produce un error en un trabajo en Azure Synapse Analytics, la característica de control de errores analiza y comprueba los registros en el back-end para identificar la causa principal. Después, muestra un mensaje al usuario en el panel de supervisión junto con los pasos para resolver el problema.
Habilitación de la clasificación de errores en Synapse
La característica de clasificación de errores se puede habilitar o deshabilitar estableciendo la siguiente configuración de Spark en true
o false
en el nivel de trabajo o grupo:
livy.rsc.synapse.error-classification.enabled
En la sección siguiente se enumeran algunos tipos de error que se admiten actualmente. Estamos perfeccionando continuamente y agregando más a estos códigos de error mediante la mejora de nuestro modelo.
Categorías de código de error
Cada código de error se encuentra en uno de los cuatro cubos siguientes:
- Usuario: indica un error de usuario
- Sistema: indica un error del sistema
- Ambiguo: podría ser un error del usuario o del sistema
- Desconocido: todavía no hay ninguna clasificación, lo más probable es que el tipo de error no esté incluido en el modelo
Ejemplos de códigos de error para cada tipo de clasificación
Spark_User_TypeError_TypeNotIterable
En Python, el error TypeError: argument of type 'insert type' is not iterable
se produce cuando se usa el operador de pertenencia (en, no en) para validar la pertenencia de un valor en objetos no iterables, como lista, tupla, diccionario. Esto suele deberse a la búsqueda de valor en un objeto no iterable. Posibles soluciones:
- Compruebe si el valor está presente en el objeto iterable.
- Si desea comprobar de un valor a otro, use el operador lógico en lugar del operador de pertenencia.
- Si el operador de pertenencia contiene el valor "None", no podrá iterar y se debe realizar una comprobación nula o un valor predeterminado asignado.
- Compruebe si el tipo del valor usado se puede comprobar realmente y si la escritura es correcta.
Spark_System_ABFS_OperationFailed
Error en una operación con ADLS Gen2.
Este error suele producirse debido a problemas de permisos.
Asegúrese de que, para todos los recursos de ADLS Gen2 a los que se hace referencia en el trabajo de Spark, tenga el rol RBAC "Colaborador de datos de Storage Blob" en las cuentas de almacenamiento desde las que se espera que el trabajo lea y escriba. Compruebe los registros de esta aplicación Spark. Vaya a Synapse Studio y seleccione la pestaña Supervisar en el panel izquierdo. En la sección Actividades, seleccione Apache Spark Applications (Aplicaciones de Apache Spark) y busque el trabajo de Spark en la lista. Para el nombre de la cuenta de almacenamiento de ADLS Gen2 que está experimentando esta incidencia, inspeccione los registros disponibles en la pestaña Registros en la parte inferior de esta página.
Spark_Ambiguous_ClassLoader_NoClassDefFound
No se encontró una clase requerida por el código cuando se ejecutó el script.
Consulte las siguientes páginas para obtener documentación de administración de paquetes:
Para escenarios de Notebook: Apache Spark administra paquetes para trabajos interactivos
Para escenarios por lotes de Spark (consulte la sección 6): Administración de paquetes de Apache Spark para trabajos por lotes
Asegúrese de que todas las dependencias de código se incluyen en las JAR que ejecuta Synapse. Si no incluye o no puede incluir archivos JAR de terceros con su propio código, asegúrese de que todas las dependencias se incluyen en los paquetes de área de trabajo del grupo de Spark en el que está ejecutando código o que se incluyen en la lista "Archivos de referencia" para el envío por lotes de Spark. Consulte la documentación anterior para más información.
Spark_Unknown_Unknown_java.lang.Exception
Un error desconocido, el modelo no pudo clasificarlo.
Los códigos de error (incluidos los de la lista mostrada anteriormente y más) junto con las instrucciones de solución de problemas sobre cómo resolver la incidencia se mostrarán en el panel de errores de la aplicación Synapse Studio si esta característica está habilitada.
Nota:
Si ha creado alguna herramienta en torno al trabajo de supervisión de Synapse que comprueba si hay un trabajo con errores mediante el filtrado del código de error LIVY_JOB_STATE_DEAD
, la aplicación ya no funcionará. Dado que los códigos de error devueltos serían diferentes como se mencionó anteriormente. Modifique los scripts en consecuencia para usar esta característica o deshabilite la característica si no es necesaria.