Instalación de bibliotecas para cómputo
Al ejecutar cuadernos y trabajos en el proceso de Azure Databricks, a menudo se necesitan paquetes de terceros o código personalizado que no se incluye en el entorno de ejecución predeterminado. La instalación de bibliotecas en el nivel de clúster garantiza que todos los cuadernos y trabajos que usan ese proceso tengan acceso a las mismas dependencias, creando un entorno de ejecución coherente.
Comprender cómo instalar bibliotecas de forma eficaz se vuelve fundamental a medida que los flujos de trabajo de ingeniería de datos crecen en complejidad. Debe saber qué método de instalación usar, dónde almacenar archivos de biblioteca y cómo afectan los modos de acceso a las opciones.
Comprender las bibliotecas con alcance computacional
Bibliotecas con ámbito de cálculo instalarse en un clúster y estar disponible para todos los notebooks y trabajos que se ejecutan en ese clúster. A diferencia de las bibliotecas con ámbito de cuaderno que se instalan solo para una sesión de cuaderno específica, las bibliotecas con ámbito de proceso se conservan en los reinicios del clúster y proporcionan un entorno compartido para todos los usuarios.
Al instalar una biblioteca en el nivel de clúster, Azure Databricks lo vuelve a instalar automáticamente cada vez que se inicia el clúster. Este comportamiento garantiza la coherencia: no es necesario volver a instalar manualmente las dependencias después de detener y reiniciar un clúster. Todos los cuadernos conectados al clúster pueden importar y usar los paquetes instalados inmediatamente.
Nota:
Para instalar bibliotecas en un clúster, debe tener el permiso CAN MANAGE en ese clúster. Este permiso permite modificar la configuración del clúster, incluida la adición y eliminación de bibliotecas. Sin este permiso, no podrá acceder a la interfaz de instalación de la biblioteca.
Las bibliotecas limitadas al ámbito de cálculo admiten ruedas de Python, archivos JAR de Java y paquetes de R. Puede instalarlos desde repositorios de paquetes como PyPI y Maven, o desde archivos almacenados en archivos del área de trabajo, volúmenes de Catálogo de Unity o almacenamiento de objetos en la nube. El método de instalación que elija depende del tipo de biblioteca, el modo de acceso al clúster y los requisitos de seguridad de la organización.
Sin embargo, las bibliotecas con alcance de cómputo tienen una limitación importante: cualquier biblioteca que instale afectará a todos los notebooks del clúster. Si diferentes equipos necesitan versiones conflictivas de la misma biblioteca, necesitará clústeres separados o instalaciones con alcance de notebook para evitar conflictos.
Instalación de bibliotecas desde repositorios de paquetes
Los repositorios de paquetes proporcionan la manera más común de instalar bibliotecas. PyPI hospeda paquetes de Python, Maven hospeda bibliotecas de Java y Scala y CRAN hospeda paquetes de R. Estos repositorios controlan automáticamente la resolución de dependencias y la administración de versiones.
Para instalar una biblioteca desde PyPI, seleccione PyPI como origen de la biblioteca y escriba el nombre del paquete. En el caso de las cargas de trabajo de producción, especifique una versión exacta para garantizar la reproducibilidad: pymssql==2.3.9. Sin un número de versión, Azure Databricks instala la versión más reciente disponible, lo que podría cambiar entre instalaciones y interrumpir el código.
Las bibliotecas de Maven requieren coordenadas con el formato groupId:artifactId:version. Por ejemplo, para instalar la biblioteca microsoft JDBC Driver for SQL Server, usaría com.microsoft.sqlserver:mssql-jdbc:13.2.1.jre11. Puede buscar paquetes directamente en el cuadro de diálogo de instalación si no conoce las coordenadas exactas. Maven también admite la exclusión de dependencias transitivas específicas que podrían entrar en conflicto con otras bibliotecas instaladas.
En el caso de los paquetes de R de CRAN, proporcione el nombre del paquete. A diferencia de las bibliotecas de Python y Java, las instalaciones de CRAN siempre extraen la versión más reciente del reflejo configurado. Para fijar versiones específicas de paquetes R, debe almacenar los archivos del paquete en archivos de espacio de trabajo o volúmenes en lugar de instalarlos desde CRAN.
Con los clústeres configurados en modo de acceso estándar, las coordenadas de Maven y las rutas de acceso a archivos JAR requieren allowlist aprobación antes de la instalación. Esta medida de seguridad garantiza que los administradores revisen y aprueben las bibliotecas que se ejecutan en recursos de proceso compartidos.
Nota:
Para más información sobre cómo configurar y administrar allowlists bibliotecas, consulte la documentación.
Instalación de bibliotecas desde archivos
El almacenamiento de archivos de biblioteca en archivos de área de trabajo o volúmenes de Catálogo de Unity le proporciona un control preciso sobre qué versiones de biblioteca usan los clústeres. Este enfoque funciona bien cuando necesita bibliotecas que no están disponibles en repositorios públicos, paquetes personalizados que ha compilado internamente o versiones específicas ya no están disponibles en repositorios de paquetes.
El uso de archivos de área de trabajo y volúmenes de Unity Catalog para la instalación de bibliotecas mantiene la administración centralizada en lugar de omitir los controles de seguridad con instalaciones ad hoc, como comandos pip3 directos o scripts personalizados no administrados ejecutados desde notebooks. Los volúmenes del catálogo de Unity proporcionan una gobernanza mejorada a través del modelo de control de acceso del Catálogo de Unity, lo que garantiza que todas las instalaciones de biblioteca se realicen un seguimiento con registros de auditoría y estén protegidos por permisos específicos.
Los archivos del área de trabajo proporcionan una ubicación cómoda para el almacenamiento de bibliotecas con un límite de tamaño de archivo de 500 MB. Para instalar una biblioteca desde archivos del área de trabajo, cargue el archivo wheel, JAR o requirements.txt a través del cuadro de diálogo Importar área de trabajo y, a continuación, haga referencia a ella durante la instalación de la biblioteca mediante una ruta de acceso como /Workspace/Users/you@example.com/libraries/mypackage-1.0.0-py3-none-any.whl.
Los volúmenes del catálogo de Unity ofrecen seguridad y gobernanza mejoradas para el almacenamiento de bibliotecas. Puede controlar el acceso a través de los permisos del catálogo de Unity, lo que garantiza que solo los usuarios autorizados puedan leer o modificar archivos de biblioteca. Sube archivos a un volumen usando el Explorador de Catálogos, y luego instálalos mediante una ruta como /Volumes/main/engineering/libraries/mypackage-1.0.0-py3-none-any.whl. La identidad usada para la instalación debe tener el permiso de LECTURA DE VOLUMEN en el volumen especificado.
Los archivos requirements.txt de Python funcionan con archivos de área de trabajo y volúmenes en Databricks Runtime 15.0 y versiones posteriores. Estos archivos permiten definir varias dependencias de paquete en un único archivo, lo que facilita el mantenimiento de entornos coherentes entre clústeres. Cargue el archivo requirements.txt e instálelo igual que cualquier otra biblioteca: Azure Databricks instala automáticamente todos los paquetes enumerados.
En el caso de los clústeres con modo de acceso estándar, debe agregar las rutas de los archivos de biblioteca al allowlist antes de la instalación. Esto se aplica tanto a los archivos del área de trabajo como a los volúmenes, lo que garantiza que los administradores aprueben las bibliotecas usadas en el proceso compartido.
Uso de scripts de inicialización para la configuración avanzada
Los scripts de inicialización ejecutan comandos de shell durante el inicio del clúster, antes de que se inicien los ejecutores y el controlador de Spark. Aunque Databricks no recomienda usar scripts de inicialización para la instalación de bibliotecas, las bibliotecas con ámbito de clúster proporcionan un mejor enfoque, los scripts de inicialización resultan útiles para la configuración de nivel de sistema que las bibliotecas no pueden controlar.
Puede usar scripts de inicialización para instalar paquetes del sistema con apt-get, configurar variables de entorno o configurar agentes de supervisión. Por ejemplo, un script de inicialización podría instalar un controlador de base de datos especializado que requiera bibliotecas del sistema y, a continuación, configurar parámetros de conexión a través de variables de entorno. El script se ejecuta cada vez que se inicia el clúster, lo que garantiza que la configuración persiste en los reinicios.
Almacene scripts de inicialización en volúmenes de Catálogo de Unity para clústeres que ejecutan Databricks Runtime 13.3 LTS y versiones posteriores. Cree un archivo de script de shell, cárguelo en un volumen y, a continuación, configure el clúster para ejecutar el script especificando su ruta de acceso como /Volumes/main/engineering/scripts/setup.sh. Para el modo de acceso estándar, agregue la ruta de acceso del script de inicialización al allowlist antes de configurar el clúster.
Los scripts de inicialización se ejecutan secuencialmente en el orden especificado. Si algún script devuelve un código de salida distinto de cero, el clúster no se puede iniciar. Esta protección contra errores impide que los clústeres se ejecuten con una configuración incompleta o incorrecta. Puede solucionar problemas de scripts de inicio fallidos configurando la entrega de registros del clúster y examinando los registros de scripts de inicio.
Considere los scripts de inicialización como último recurso para las necesidades de configuración que las bibliotecas con ámbito de clúster y las directivas de clúster no pueden abordar. El uso de directivas de clúster para establecer variables de entorno y configuraciones de Spark a menudo proporciona una solución más sencilla y fácil de mantener que los scripts de inicialización.
Configuración de bibliotecas para el modo de acceso estándar
Los clústeres configurados con el modo de acceso estándar proporcionan la seguridad y el aislamiento más seguros en Azure Databricks. Este modo requiere aprobación explícita para bibliotecas e scripts de inicialización para evitar la ejecución de código no autorizado en recursos de proceso compartidos.
Antes de instalar bibliotecas de Maven o archivos JAR en clústeres de modo de acceso estándar, un administrador de metastore debe agregarlos a allowlist. Las coordenadas de Maven se representan en allowlist utilizando el formato de groupId:artifactId:version. Puede allowlist todas las versiones de una biblioteca con groupId:artifactId, o todos los artefactos de un grupo con solo groupId. Para los archivos JAR almacenados en volúmenes o almacenamiento de objetos, allowlist la ruta del archivo o del directorio.
Los scripts de inicialización requieren entradas independientes allowlist aunque se almacenen en la misma ubicación que los archivos JAR. Cuando se permite una lista de rutas de acceso, Azure Databricks utiliza la coincidencia de prefijos, agregando /Volumes/prod-libraries/ a allowlist se autorizan todos los archivos y subdirectorios dentro de esa ubicación. Incluya una barra diagonal final para evitar coincidencias de prefijos no deseados en el nivel de directorio.
allowlist solo concede permiso para usar una ruta de acceso para la instalación de la biblioteca o el script de inicialización. Todavía necesita los permisos de acceso a datos adecuados. Para los volúmenes, la identidad del instalador debe tener READ VOLUME permiso. Para el modo de acceso estándar, la identidad del propietario del clúster valida estos permisos durante la instalación de la biblioteca.
Para configurar allowlist, los administradores de metastore usan el Explorador de catálogos, seleccionando la configuración de metastore y navegando a la sección Scripts de JAR/inicialización permitidos. Este control centralizado garantiza que los equipos de seguridad puedan revisar y aprobar todas las bibliotecas usadas en los recursos de proceso de la organización, manteniendo la gobernanza sin bloquear la productividad.
Elección del método de instalación adecuado
Los distintos métodos de instalación de biblioteca se adaptan a diferentes escenarios. En el diagrama siguiente se muestra un flujo de decisión que le ayudará a seleccionar el enfoque de instalación adecuado: