Solución de errores de instalación de biblioteca
Para que el código de terceros o el código compilado localmente esté disponible para las aplicaciones, puede instalar una biblioteca en uno de los grupos de Apache Spark sin servidor. Los paquetes que aparecen en el archivo requirements.txt se descargan de PyPi cuando se inicia el grupo. Este archivo de requisitos se usa cada vez que se crea una instancia de Spark desde ese grupo de Spark. Una vez instalada una biblioteca para un grupo de Spark, está disponible para todas las sesiones que usan el mismo grupo.
En algunos casos, puede encontrar que una biblioteca no aparece en el grupo de Apache Spark. Esto suele ocurrir si hay un error en el archivo requirements.txt proporcionado o en las bibliotecas especificadas. Cuando se produce un error en el proceso de instalación de la biblioteca, el grupo de Apache Spark se revertirá a las bibliotecas especificadas en el runtime base de Azure Synapse.
El objetivo de este documento es proporcionar información sobre problemas comunes y ayudarlo a depurar los errores de instalación de la biblioteca.
Forzar la actualización del grupo de Apache Spark
Al actualizar las bibliotecas del grupo de Apache Spark, estos cambios se seleccionarán una vez que el grupo se reinicia. Si tiene trabajos activos, estos trabajos seguirán ejecutándose en la versión original del grupo de Spark.
Para forzar la aplicación de los cambios, seleccione la opción para forzar la nueva configuración. Esta configuración terminará todas las sesiones actuales del grupo de Spark seleccionado. Una vez finalizadas las sesiones, tendrá que esperar a que el grupo se reinicie.
Seguimiento del progreso de la instalación
Cada vez que se actualiza un grupo con un nuevo conjunto de bibliotecas, se inicia un trabajo de Spark reservado para el sistema. Este trabajo de Spark ayuda a supervisar el estado de la instalación de las bibliotecas. Si se produce un error en la instalación debido a conflictos entre bibliotecas u otros problemas, el grupo de Spark volverá a su estado anterior o predeterminado.
Además, los usuarios pueden inspeccionar los registros de instalación para identificar conflictos de dependencia o ver qué bibliotecas se instalaron durante la actualización del grupo.
Para consultar estos registros:
- Vaya a la lista de aplicaciones de Spark en la pestaña Supervisar.
- Seleccione el trabajo del sistema de la aplicación de Spark que corresponde a la actualización del grupo. Estos trabajos del sistema se ejecutan con el nombre SystemReservedJob-LibraryManagement.
- Cambie para ver los registros del controlador y de stdout.
- En los resultados, verá los registros relacionados con la instalación de los paquetes.
Errores de instalación de pista
En determinados casos, los usuarios también pueden inspeccionar los registros de instalación completos disponibles en el servidor de historial de Spark para identificar conflictos de dependencia complicados. Los registros disponibles a través de la interfaz de usuario de Spark se pueden truncar. Acceder a los registros de instalación completos a través del servidor de historial de Spark puede ser útil en escenarios complejos de instalación de biblioteca.
Para ver los registros de instalación completos:
- Vaya a la lista de aplicaciones de Spark en la pestaña Supervisar.
- Seleccione el trabajo de la aplicación Spark del sistema que corresponde a la actualización del grupo que ha fallado. Estos trabajos del sistema se ejecutan con el nombre SystemReservedJob-LibraryManagement.
- Seleccione la opción Servidor de historial de Spark destacada, que abrirá la página de detalles del servidor de historial de Spark en una nueva pestaña.
- En esta página, verá 2 intentos. Seleccione Intento 1 como se muestra a continuación.
- En la barra de navegación superior que se encuentra en la página del servidor de historial de Spark, cambie a la pestaña Ejecutores.
- Descargue los archivos de registro stdout y stderr para acceder a los registros de errores y salida de administración de bibliotecas completos.
Validación de los permisos
Para instalar y actualizar las bibliotecas, debe tener los permisos de tipo Colaborador de datos de Storage Blob o Propietario de datos de Storage Blob en la cuenta de almacenamiento principal de Azure Data Lake Storage Gen2 que está vinculada con el área de trabajo de Azure Synapse Analytics.
Para validar que tiene estos permisos, puede ejecutar el código siguiente:
from pyspark.sql.types import StructType,StructField, StringType, IntegerType
data2 = [("James","Smith","Joe","4355","M",3000),
("Michael","Rose","Edward","40288","F",4000)
]
schema = StructType([ \
StructField("firstname",StringType(),True), \
StructField("middlename",StringType(),True), \
StructField("lastname",StringType(),True), \
StructField("id", StringType(), True), \
StructField("gender", StringType(), True), \
StructField("salary", IntegerType(), True) \
])
df = spark.createDataFrame(data=data2,schema=schema)
df.write.csv("abfss://<<ENTER NAME OF FILE SYSTEM>>@<<ENTER NAME OF PRIMARY STORAGE ACCOUNT>>.dfs.core.windows.net/validate_permissions.csv")
Si recibe un error, es probable que le falten los permisos necesarios. Para saber cómo obtener los permisos necesarios, consulte este documento: Asignación de los permisos Colaborador de datos de Storage Blob o Propietario de datos de Storage Blob.
Además, si ejecuta una canalización, el MSI del área de trabajo también debe tener los permisos Propietario de datos de Storage Blob o Colaborador de datos de Storage Blob. Para información sobre cómo conceder este permiso a su identidad de área de trabajo, visite: Concesión de permisos a una identidad administrada de área de trabajo.
Revisión del archivo de configuración del entorno
Se puede usar un archivo de configuración de entorno para actualizar el entorno de Conda. Los formatos de archivo admitidos para la administración de grupos de Python se enumeran en Especificaciones de entorno.
Es importante tener en cuenta las restricciones siguientes:
- El contenido del archivo de requisitos no debe incluir líneas o caracteres en blanco adicionales.
- El entorno de ejecución de Synapse incluye un conjunto de bibliotecas instalado previamente en cada grupo de Apache Spark sin servidor. Los paquetes instalados previamente en el entorno de ejecución base no pueden quitar ni desinstalar.
- No se admite la modificación de la versión de PySpark, Python, Scala/Java, .NET o Spark.
- Las bibliotecas de ámbito de sesión de Python solo aceptan archivos con la extensión YML.
Validación de los archivos Wheel
Los grupos de Apache Spark sin servidor de Synapse se basan en la distribución de Linux. Al descargar e instalar archivos Wheel directamente de PyPI, asegúrese de seleccionar la versión que se basa en Linux y que se ejecuta en la misma versión de Python que el grupo de Spark.
Importante
Los paquetes personalizados se pueden agregar o modificar entre sesiones. Pero deberá esperar a que el grupo y la sesión se reinicien para ver el paquete actualizado.
Comprobación de conflictos de dependencia
En general, la resolución de dependencias de Python puede ser difícil de administrar. Para ayudar a depurar localmente los conflictos de dependencia, puede crear su propio entorno virtual basado en el entorno de ejecución de Synapse y validar los cambios.
Para volver a crear el entorno y validar las actualizaciones, haga lo siguiente:
Descargue la plantilla para volver a crear el entorno de ejecución de Synapse de manera local. Puede haber pequeñas diferencias entre la plantilla y el entorno de Synapse real.
Use estas instrucciones para crear un entorno virtual. Este entorno le permite crear una instalación de Python aislada con la lista de bibliotecas especificada.
conda myenv create -f environment.yml conda activate myenv
Use
pip install -r <provide your req.txt file>
para actualizar el entorno virtual con los paquetes especificados. Si se produce un error en la instalación, puede haber un conflicto entre lo que se instaló previamente en el entorno de ejecución base de Synapse y lo que se especifica en el archivo de requisitos proporcionado. Es necesario resolver estos conflictos de dependencia para obtener las bibliotecas actualizadas en el grupo de Apache Spark sin servidor.
Importante
Pueden surgir problemas al usar PIP y Conda juntos. Al combinar PIP y Conda, es mejor seguir estos procedimientos recomendados.
Pasos siguientes
- Visualización de las bibliotecas predeterminadas: Compatibilidad de las versiones de Azure Spark